我正在使用 CentosOS VPS、Nginx、Varnish 和 Apache,只有当很多人同时访问网站时,我才会遇到高负载问题。导致问题的网站(用户:livetvk+)有许多 php 页面(90% 被缓存并在 CloudFlare 上),当人们打开页面时,我看到许多/usr/local/apache/bin/httpd
进程的 CPU 占用率为 3-4%。
这是我的登录高峰期:
USER PID CMD TIME %CPU %MEM
nobody 9244 /usr/local/apache/bin/httpd 00:00:04 5.4 0.3
livetvk+ 12592 /usr/local/bin/php-cgi /hom 00:00:00 5.0 0.2
amavis 12089 /usr/bin/perl -T /usr/sbin/ 00:00:00 4.5 0.6
livetvk+ 12381 /usr/local/bin/php-cgi /hom 00:00:00 4.3 0.5
livetvk+ 12406 /usr/local/bin/php-cgi /hom 00:00:00 4.2 0.5
livetvk+ 12601 /usr/local/bin/php-cgi /hom 00:00:00 4.0 0.2
livetvk+ 12609 /usr/local/bin/php-cgi /hom 00:00:00 4.0 0.1
livetvk+ 12613 /usr/local/bin/php-cgi /hom 00:00:00 4.0 0.2
livetvk+ 12617 [php-cgi] 00:00:00 4.0 0.0
mysql 12140 /usr/sbin/mysqld 00:00:00 3.9 1.5
root 12341 /usr/bin/spamd --pidfile /v 00:00:00 3.7 0.6
livetvk+ 12490 /usr/local/bin/php-cgi /hom 00:00:00 3.7 0.4
amavis 12143 /usr/sbin/clamd -c /etc/cla 00:00:00 3.2 0.6
root 12099 /usr/bin/spamd --pidfile /v 00:00:00 3.1 0.3
livetvk+ 12582 /usr/local/bin/php-cgi /hom 00:00:00 3.0 0.1
livetvk+ 12584 /usr/local/bin/php-cgi /hom 00:00:00 3.0 0.1
livetvk+ 12589 /usr/local/bin/php-cgi /hom 00:00:00 3.0 0.2
root 12602 /usr/local/bin/php /home/li 00:00:00 3.0 0.2
livetvk+ 12618 /usr/local/bin/php-cgi /hom 00:00:00 3.0 0.1
load average: 186.17, 72.93, 27.54
正如您所看到的,负载非常高,我想到用:
nice
和cpulimit
命令来限制它。
由于 usr/local/bin/php
负载较高,我的计划是限制
usr/local/bin/php
CPU 的 2% 或 3%,并nice
为相同的进程设置较低的优先级。
我不知道如何智能地限制php-cgi?我不确定这是一个好主意,所以我问你们对此有何看法,如果有人可以提供更好的解决方案,我将不胜感激。
我有:
- CPU 型号:Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz
- CPU 详细信息:4 核 (2600 MHz)
- 发行版名称:CentOS Linux 版本 7.7.1908(核心)
- 内核版本:3.10.0
- 平台:x86_64
- 内存:6GB
答案1
/usr/local/bin/php-cgi
与您报告的不同,正在产生负载,而不是其他东西,所以请坚持事实,除非您想引起混乱。那么,首先,负载有什么问题呢?负载是计算机应该做的事情。是不是太高了?为什么?你有什么期望或愿望?什么是不正确的,你为什么这么认为?
至于解决方案——这就是您的应用程序。您的具体目标是什么?您是否尝试过修复您的代码?有 Apache 调整吗?内核调优?添加一些细节。你问的问题意义不大。