我有一个 OpenNMS Linux 服务器,其磁盘性能很差。该机器是VPC内的EC2。在顶上显示:
奥托普显示:
如何减少 IO 数量并降低磁盘利用率?
伊奥尼斯回复:
ubuntu@ip-10-12-251-11:~$ sudo ionice -c3 -p $(pidof opennms)
ionice: option requires an argument -- 'p'
ionice - sets or gets process io scheduling class and priority.
Usage:
ionice [OPTION] -p PID [PID...]
ionice [OPTION] COMMAND
Options:
-c, --class <class> scheduling class name or number
0: none, 1: realtime, 2: best-effort, 3: idle
-n, --classdata <num> scheduling class data
0-7 for realtime and best-effort classes
-p, --pid=PID view or modify already running process
-t, --ignore ignore failures
-V, --version output version information and exit
-h, --help display this help and exit
答案1
尝试rrenice
从德班的列表包裹。例如,这将 及其后代的优先级设置opennms
为尽可能低的设置:
sudo rrenice 19 opennms
或者不可用,请使用 plain renice
:
sudo renice -n 19 -p $(pidof opennms)
对于磁盘占用程序,请使用ionice
:
ionice -c3 -p $(pidof opennms)
顺便提一句:该opennms
过程不应该那么消耗资源。有些东西要么有问题,要么挂在那里。
答案2
这些数字显示了写绑定过程,因此缓存调整OpenNMS 建议的没有帮助。
然而,如果你牺牲了,这可能会有所帮助耐用性。如果您的 OpenNMS 挂掉了,数据库是否提前几秒显示它挂掉也并不重要。 (这与电子邮件服务器不同,其中客户端依赖于至少一次语义)。不过,您可能会丢失崩溃前所做的配置更改;也许只是确保您注意到崩溃,并在进行配置更改后检查系统是否仍然在线。尝试synchronous_commit = off
。默认情况下,持久性损失的窗口仅为 600 毫秒。
如果synchronous_commit = off
达到了预期的效果,可能还有一种不牺牲耐用性的替代方案。看commit_delay
。在我看来,OpenNMS 也可以很好地解决这个问题。您需要将 a 设置commit_delay
为观察到的 IOPS 的倒数。那么我认为<poller-configuration threads=
如果 CPU(和 RAM)利用率仍然很低,你可以增加。