Apache服务器和许多httpd进程的问题
我们的Apache服务器有问题。它非常慢,cpu使用率非常高(有时显示为100%不变) 它在ubuntu系统上 你知道这是什么原因吗 “top”显示了这一点(可能还有更多的httpd进程不适合终端窗口):Apache服务器和许多httpd进程的问题,apache,Apache,我们的Apache服务器有问题。它非常慢,cpu使用率非常高(有时显示为100%不变) 它在ubuntu系统上 你知道这是什么原因吗 “top”显示了这一点(可能还有更多的httpd进程不适合终端窗口): Apache需要分叉一个进程来处理每个连接的客户机。阅读更多关于这方面的信息 结果是你有很多进程,因为你有很多连接。如果您的服务器因此运行缓慢,则以下是一些选项: 优化应用程序:分析应用程序的代码,并尝试优化服务器负载最大的区域 考虑更改为影响较小的web服务器,例如。这可能会增加服务器可以处
Apache需要分叉一个进程来处理每个连接的客户机。阅读更多关于这方面的信息 结果是你有很多进程,因为你有很多连接。如果您的服务器因此运行缓慢,则以下是一些选项:
在我看来,最快的胜利可能是选择2和3。但这意味着在安装或使用备份服务器时停机。根据我的经验,几十个httpd进程都是DOS攻击。在安装了mod_evasive之后,通过top显示的数十个httpd进程几乎被删除,我的mysql CPU负载从平均100%+/99%的时间利用率下降到了更重的查询操作期间预期的20% 要在RHEL(CentOS/Fedora/Redhat)系统上安装mod_evasive,请执行以下操作:
yum install -y mod_evasive
重新启动Apache
/sbin/service httpd restart
或
还有中提琴
即使DOS攻击不是您的问题,在攻击发生之前减轻攻击也是明智的。System and Httpd Information
系统:
Httpd版本:
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 14 2016 18:04:44
进行MPM预工作配置
默认情况下获取MPM
# sudo apachectl -t -D DUMP_MODULES |grep mpm
[Thu Jan 12 16:06:11.778080 2017] [so:warn] [pid 23727] AH01574: module wsgi_module is already loaded, skipping
mpm_prefork_module (shared)
这意味着安装并启用了mpm\U预工作模块。您可以将其更改为文件00 mpm.conf
中的事件
、工作者
或预工作(默认)
,文件路径为/etc/httpd/conf.modules.d
apachempm的参考是
添加个人配置
# sudo cat >> /etc/httpd/conf/httpd.conf <<-'EOF'
<IfModule prefork.c>
ServerLimit 20
StartServers 15
MinSpareServers 5
MaxSpareServers 10
MaxClients 15
MaxRequestsPerChild 25
</IfModule>
EOF
检查状态
或
我的apache服务器每秒收到2个请求。在此之前,httpd进程的数量一直在增加,直到系统停止。设置MPM预工作后,工作正常。apache处理多少个连接?您可以使用
netstat-anpt | grep httpd | grep-builded | cut-b45-60 | cut-d':'-f1 | sort-rn | uniq-c
对其进行监控,有关详细信息,请参阅。还有,这和MySQL有什么关系?你是对的,这没有关系。删除了标记。当我运行命令时,我得到sort:open失败:+1:没有这样的文件或目录抱歉,输入错误。FixedI设法运行:netstat-anpt | grep httpd | grep-builded | cut-b45-60 | cut-d':'-f1 | uniq-c,这给了我大约50个ip号码。他们中的大多数前面有1个,其中7个前面有2个。如果您使用的是基于php的应用程序,那么请尝试使用eaccelerator。通过将php缓存在编译状态,这将更快地为php服务。目前需要节省cpu,这就是我所看到的,在这种情况下,varnish没有多大帮助,因为磁盘i/o不是瓶颈。。。考虑使用nginx是一个好主意,正如jonathan@CloudyDna一些好的建议。我添加varnish并不是为了减轻磁盘IO的负担,而是为了临时缓存整个页面,以避免应用程序服务器必须运行,不管是PHP还是其他什么。这将减少CPU周期,页面加载时间将更快,释放apache进程以交付给更多客户机。在我们这个时代,DDOS攻击变得越来越普遍。
# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Nov 14 2016 18:04:44
# sudo apachectl -t -D DUMP_MODULES |grep mpm
[Thu Jan 12 16:06:11.778080 2017] [so:warn] [pid 23727] AH01574: module wsgi_module is already loaded, skipping
mpm_prefork_module (shared)
# sudo cat >> /etc/httpd/conf/httpd.conf <<-'EOF'
<IfModule prefork.c>
ServerLimit 20
StartServers 15
MinSpareServers 5
MaxSpareServers 10
MaxClients 15
MaxRequestsPerChild 25
</IfModule>
EOF
# sudo systemctl restart httpd.service
# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2017-01-12 13:40:12 CST; 2h 48min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 16576 (httpd)
Status: "Total requests: 3625; Current requests/sec: -70.2; Current traffic: 0 B/sec"
Memory: 869.7M
CGroup: /system.slice/httpd.service
├─16576 /usr/sbin/httpd -DFOREGROUND
├─24122 /usr/sbin/httpd -DFOREGROUND
├─24125 /usr/sbin/httpd -DFOREGROUND
├─24154 /usr/sbin/httpd -DFOREGROUND
├─24157 /usr/sbin/httpd -DFOREGROUND
├─24211 /usr/sbin/httpd -DFOREGROUND
├─24219 /usr/sbin/httpd -DFOREGROUND
└─24236 /usr/sbin/httpd -DFOREGROUND
Jan 12 13:40:12 192-168-1-68.node systemd[1]: Starting The Apache HTTP Server...
Jan 12 13:40:12 192-168-1-68.node httpd[16576]: [Thu Jan 12 13:40:12.614941 2017] [so:warn] [pid 16576] AH01574: module wsgi_module is already loaded, skipping
Jan 12 13:40:12 192-168-1-68.node systemd[1]: Started The Apache HTTP Server.
# ps aux|grep httpd
root 16576 0.0 0.0 232232 504 ? Ss 13:40 0:01 /usr/sbin/httpd -DFOREGROUND
apache 24296 10.9 4.8 542936 91500 ? S 16:29 0:16 /usr/sbin/httpd -DFOREGROUND
apache 24310 10.6 4.7 542804 89752 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24343 11.2 6.5 542804 123944 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24344 11.1 6.5 542804 124084 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24345 11.6 6.7 542804 126616 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24347 11.0 6.6 542804 125764 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24377 12.0 6.7 542804 126396 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24378 12.4 6.7 542804 126448 ? S 16:29 0:15 /usr/sbin/httpd -DFOREGROUND
apache 24408 12.3 6.6 542804 126032 ? S 16:29 0:14 /usr/sbin/httpd -DFOREGROUND
apache 24450 18.6 5.4 511560 102520 ? R 16:30 0:10 /usr/sbin/httpd -DFOREGROUND
apache 24458 19.4 4.7 498476 89548 ? S 16:30 0:08 /usr/sbin/httpd -DFOREGROUND
apache 24466 21.4 4.5 495424 86416 ? R 16:31 0:07 /usr/sbin/httpd -DFOREGROUND
apache 24484 0.5 0.3 236456 5760 ? S 16:31 0:00 /usr/sbin/httpd -DFOREGROUND
root 24496 0.0 0.0 112652 964 pts/0 S+ 16:31 0:00 grep --color=auto httpd