我有一个 node.js 进程,它写入许多不同的 sqlite 数据库。Sqlite 只能处理每个数据库一次并发写入,这很好,因为每个数据库一次只有一次写入,但同时写入多个不同的数据库。
我如何确定系统中的写入瓶颈在哪里: 1. 操作系统(Debian Wheezy) 2. SSD 3. Node.js
我认为 sqlite 不会成为瓶颈,因为每个数据库不会并发写入,但会同时写入不同的数据库。
编辑:我正在尝试确定边界因子,以便我可以决定何时扩展到新框,或添加更多 node.js 进程等。
我正在使用 Linux 的“top”命令来监视特定进程的 %CPU。由于值每隔几秒就会不断变化,有没有办法在单独的文件中或作为图形表示来跟踪值?是否可以使用任何 shell 脚本来做到这一点?
我有一个守护进程,它使用 GPIO 端口监视各种事物。我已经使用 Python 使用 RPi.GPIO 模块为此编写了代码。
我想确保守护进程始终运行,即在崩溃后重新启动它并在系统启动时启动它(至关重要的是在任何用户登录之前——这个 Pi 无头运行)。有一个闪烁的 LED 告诉我它正在运行,但这并不理想。
我已阅读有关为此目的使用 MONIT 的信息,但我遇到了一些问题。到目前为止,我的尝试主要围绕这个解决方案:
这是我的 bash 包装文件,名为 /home/pi/UPSalarm/UPSalarm.bash
#!/bin/bash
PIDFILE=/var/run/UPSalarm.pid
case $1 in
start)
#source /home
#Launch script
sudo python /home/pi/UPSAlarm/UPSalarm.py 2>/dev/null &
# store PID value
echo $! > ${PIDFILE}
;;
stop)
kill `cat ${PIDFILE}`
# Proccess killed, now remove PID
rm ${PIDFILE}
;;
*)
echo "usage: scraper {start|stop}" ;;
esac
exit 0`
Run Code Online (Sandbox Code Playgroud)
这是我的监控规则
check process UPSalarm with pidfile /var/run/UPSalarm.pid
start = "/home/pi/UPSalarm/UPSalarm start"
stop = "/home/pi/UPSalarm/UPSalarm …Run Code Online (Sandbox Code Playgroud) 如何查看应用程序使用的原始内存数据?比如,假设我有一个文件名something.sh。现在我运行命令./something.sh,然后我想查看它在 ram 中访问的所有数据以及它在我的文件系统中访问的所有文件、网络数据或它使用的连接。可能是此应用程序使用的内存的十六进制转储。我可以在 ubuntu 中做到这一点吗?
你知道有哪些监控系统功耗的应用程序吗?不仅仅是cpu,而是所有组件,最好是?
更新 - powertop&powerstat
我找到了powertop,但它并没有说太多。
我还发现了这个问题:功耗监控问题及其在 Ask Ubuntu 上的重复:https : //askubuntu.com/questions/291904/missed-power-est-column-in-powertop。
答案是powertop在提供功耗计算之前需要几个小时来收集数据。(grochmal在他的评论中也提出了这一建议。)但鉴于我发现powertop在后台运行的内容,这可能不是全部事实。
$ sudo powertop &
[1] 20744
tomasz@tomasz-Latitude-E4200:~$ Loaded 0 prior measurements
Cannot load from file /var/cache/powertop/saved_parameters.powertop
File will be loaded after taking minimum number of measurement(s) with battery only
RAPL device for cpu 0
RAPL device for cpu 0
RAPL device for cpu 0
Devfreq not enabled
Cannot load from file /var/cache/powertop/saved_parameters.powertop
File will …Run Code Online (Sandbox Code Playgroud) 我对 Linux 还很陌生,我正在寻找一种具有 Web 前端的监控工具。专门寻找以下方面的统计数据:
我对服务器监控软件的所有期望,能够根据高 CPU 温度等因素发送电子邮件将是一个奖励。
理想情况下,我想找到一些免费和开源的东西,但如果值得的话我会付费。
有人有什么建议吗?
谢谢
史蒂夫
我有一个配置文件,想了解哪些可执行文件正在使用它(如果有)。我想知道谁是这个文件的读者。
如果我watch有一些间隔,我会想念它,因为读取发生得如此之快:
watch -d -n 1 "lsof /home/me/my.conf"
Run Code Online (Sandbox Code Playgroud)
如果我尝试执行该程序,我很确定在 的支持下使用它strace,它会由于strace引入的额外延迟而失败。
strace -o /tmp/$(date +%s)_myprog.trace myprog
Run Code Online (Sandbox Code Playgroud)
我怎样才能可靠地证明myprog没有读取这个文件?
是否有一些性能监控工具可以在后台运行,收集有关所有系统活动的信息?有时我的系统(Arch linux,32 位)速度非常慢,并且该top实用程序不显示任何内容。
我想象一些守护进程会收集信息并记录它,所以当减速消失时,我将能够找到问题所在。
我有一个python脚本,用于urllibs解析一些网页,并使用selenium用javascript抓取页面,我想知道它的累积带宽使用情况。我看过 nethogs,但它告诉我每秒的使用情况,但不会告诉我脚本在 eth0 上接收或发送了多少数据,例如。
理想情况下,我希望它在我开始监控后跟踪所有新进程,然后保留每个进程使用的总数的表格。
有这样的工具吗?如果没有,我可以在脚本中实现 Python 中的库来跟踪它吗?
我一直在查看 /proc 的文档,并且“堆栈”对象是 proc 中的一个新对象,我还查看了内核提交以创建它——但是文档没有详细说明 / proc/self/stack 文件——并且因为我直觉地认为它是进程的实际堆栈——但是旧pstack工具给出了不同(并且更可信)的输出。
因此,作为 bash 堆栈的示例
$ cat /proc/self/stack
[<ffffffff8106f955>] do_wait+0x1c5/0x250
[<ffffffff8106fa83>] sys_wait4+0xa3/0x100
[<ffffffff81013172>] system_call_fastpath+0x16/0x1b
[<ffffffffffffffff>] 0xffffffffffffffff
Run Code Online (Sandbox Code Playgroud)
并且,使用 pstack
$ pstack $$
#0 0x00000038cfaa664e in waitpid () from /lib64/libc.so.6
#1 0x000000000043ed42 in ?? ()
#2 0x000000000043ffbf in wait_for ()
#3 0x0000000000430bc9 in execute_command_internal ()
#4 0x0000000000430dbe in execute_command ()
#5 0x000000000041d526 in reader_loop ()
#6 0x000000000041ccde in main ()
Run Code Online (Sandbox Code Playgroud)
地址不同,显然符号根本不一样......
有没有人对差异和/或描述 /proc-stack 中实际显示内容的文档有解释?