Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache服务器和许多httpd进程的问题_Apache - Fatal编程技术网

Apache服务器和许多httpd进程的问题

Apache服务器和许多httpd进程的问题,apache,Apache,我们的Apache服务器有问题。它非常慢,cpu使用率非常高(有时显示为100%不变) 它在ubuntu系统上 你知道这是什么原因吗 “top”显示了这一点(可能还有更多的httpd进程不适合终端窗口): Apache需要分叉一个进程来处理每个连接的客户机。阅读更多关于这方面的信息 结果是你有很多进程,因为你有很多连接。如果您的服务器因此运行缓慢,则以下是一些选项: 优化应用程序:分析应用程序的代码,并尝试优化服务器负载最大的区域 考虑更改为影响较小的web服务器,例如。这可能会增加服务器可以处

我们的Apache服务器有问题。它非常慢,cpu使用率非常高(有时显示为100%不变)

它在ubuntu系统上

你知道这是什么原因吗

“top”显示了这一点(可能还有更多的httpd进程不适合终端窗口):


Apache需要分叉一个进程来处理每个连接的客户机。阅读更多关于这方面的信息

结果是你有很多进程,因为你有很多连接。如果您的服务器因此运行缓慢,则以下是一些选项:

  • 优化应用程序:分析应用程序的代码,并尝试优化服务器负载最大的区域
  • 考虑更改为影响较小的web服务器,例如。这可能会增加服务器可以处理的连接数
  • 添加页面缓存,使用类似
  • 添加另一台服务器,并在它们之间实现负载平衡
  • 增加现有服务器的功能(例如,增加RAM、升级处理器、安装更快的硬盘)
  • 所有这些选择都有成本,无论是时间还是金钱。不幸的是,事情就是这样:)


    在我看来,最快的胜利可能是选择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