簡體   English   中英

Apache服務器的問題和大量的httpd進程

[英]Problems with Apache servers and A LOT of httpd processes

我們的Apache服務器有問題。 它真的很慢並且cpu使用率非常高(有時顯示100%的常數)。

它在ubuntu系統上。

可能導致這種情況的任何想法?

“top”顯示了這一點(可能還有更多的httpd進程不適合終端窗口):

top - 11:33:19 up  1:07,  2 users,  load average: 37.79, 35.90, 29.14
Tasks:  86 total,  10 running,  76 sleeping,   0 stopped,   0 zombieCpu(s): 90.6%us,  9.4%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:    786432k total,   379584k used,   406848k free,        0k buffersSwap:        0k total,        0k used,        0k free,        0k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                      
 5507 nobody    16   0 54540  19m 5204 S    4  2.6   0:03.70 httpd                          5653 nobody    17   0 59996  24m 4808 R    4  3.2   0:01.98 httpd                         
 3277 nobody    15   0  201m  51m 6724 R    2  6.7   2:14.30 mysqld                         5260 nobody    15   0 53740  18m 4972 S    2  2.4   0:06.53 httpd                         
 5333 nobody    15   0 54536  19m 5152 S    2  2.5   0:06.50 httpd                          3923 nobody    15   0 52644  18m 6372 S    1  2.4   0:16.80 httpd                         
 5519 nobody    15   0 51252  15m 4792 S    1  2.0   0:03.02 httpd                          4048 nobody    15   0 52808  17m 5040 R    1  2.3   0:13.86 httpd                         
 5240 nobody    15   0 53980  18m 4916 S    1  2.4   0:08.42 httpd                         
 5249 nobody    15   0 52908  17m 5188 S    1  2.3   0:08.23 httpd                          5385 nobody    15   0 52568  16m 4824 S    1  2.2   0:04.19 httpd                         
 5395 nobody    16   0 52536  16m 4804 S    1  2.1   0:03.90 httpd                          5422 nobody    16   0 51408  15m 4888 S    1  2.1   0:03.49 httpd                         
 5503 nobody    15   0 52536  16m 4800 S    1  2.1   0:02.67 httpd                          3646 nobody    15   0 52572  16m 5012 S    1  2.2   0:25.42 httpd                         
 3948 nobody    15   0 52844  17m 5008 R    1  2.3   0:17.15 httpd                          5283 nobody    15   0 54000  18m 4944 S    1  2.4   0:07.05 httpd                         
 5300 nobody    15   0 54748  19m 5276 S    1  2.6   0:06.20 httpd                          5304 nobody    15   0 52876  17m 4904 S    1  2.2   0:06.45 httpd                         
 5305 nobody    15   0 52812  17m 4884 S    1  2.2   0:06.02 httpd                          5400 nobody    16   0 52060  16m 4800 R    1  2.1   0:04.10 httpd                         
 5423 nobody    15   0 54764  19m 5196 S    1  2.6   0:04.37 httpd                          5433 nobody    15   0 52168  16m 4844 R    1  2.1   0:03.38 httpd                         
 5497 nobody    15   0 52572  16m 4820 S    1  2.2   0:02.83 httpd                          5498 nobody    15   0 53076  17m 4864 S    1  2.3   0:03.14 httpd                         
 5502 nobody    15   0 51260  15m 4804 S    1  2.0   0:02.70 httpd                          5505 nobody    15   0 54920  19m 4976 S    1  2.5   0:02.68 httpd                         
 5546 nobody    15   0 52584  16m 4664 S    1  2.2   0:02.48 httpd                          5550 nobody    15   0 51244  15m 4796 S    1  2.0   0:02.42 httpd                         
 5652 nobody    15   0 51976  17m 5912 S    1  2.3   0:01.24 httpd                          5659 nobody    15   0 55012  19m 4980 S    1  2.6   0:01.25 httpd                         
 5707 nobody    15   0 51416  15m 4880 S    1  2.1   0:00.09 httpd                          5710 nobody    15   0 51240  15m 4792 S    1  2.0   0:00.14 httpd                         
 5399 nobody    15   0 52568  16m 4856 S    1  2.2   0:03.86 httpd                          5435 nobody    15   0 52596  16m 4864 S    1  2.2   0:02.96 httpd                         
 5467 nobody    15   0 52316  16m 4856 R    1  2.1   0:02.93 httpd                          5501 nobody    15   0 52956  17m 4844 S    1  2.2   0:02.79 httpd                         
 5525 nobody    15   0 54508  19m 4916 S    1  2.5   0:03.41 httpd                          5547 nobody    15   0 52604  18m 5708 S    1  2.3   0:02.77 httpd                         
 5590 root      15   0 19208 1360 1044 R    1  0.2   0:00.39 top                            5627 nobody    15   0 55648  20m 5164 S    1  2.6   0:02.56 httpd                         
 5629 nobody    15   0 51248  15m 4792 S    1  2.0   0:01.62 httpd                          5647 nobody    15   0 52956  17m 4884 S    1  2.2   0:01.16 httpd                         
 5656 nobody    15   0 52588  17m 4884 S    1  2.2   0:00.94 httpd                          5665 nobody    15   0 51244  15m 4792 S    1  2.0   0:01.36 httpd                         
 5709 nobody    15   0 51928  15m 4628 S    1  2.1   0:00.02 httpd                          5711 nobody    16   0 51148  15m 4600 S    1  2.0   0:00.02 httpd                      

Apache需要派生進程來處理每個連接的客戶端。 在這里閱讀更多相關信息。

結果是你有很多進程,因為你有很多連接。 如果您的服務器運行緩慢,那么這里有幾個選項:

  1. 優化您的應用程序:分析應用程序的代碼,並嘗試優化服務器上​​負載最大的區域。
  2. 考慮更改為影響較小的Web服務器,例如nginx 可能會增加服務器可以處理的連接數。
  3. 添加頁面緩存,使用清漆之類的東西
  4. 添加另一台服務器,並在它們之間進行負載平
  5. 增加現有服務器的功能(例如增加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

要么

systemctl restart httpd

和中提琴。

即使DOS攻擊不是你的問題,在攻擊發生之前減輕攻擊也是明智之舉。

系統和Httpd信息

系統:
 # cat /proc/version Linux version 3.10.0-514.2.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Dec 6 23:06:41 UTC 2016 
Httpd版本:
 # httpd -v Server version: Apache/2.4.6 (CentOS) Server built: Nov 14 2016 18:04:44 

制作MPM Prefork配置

獲取默認的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_prefork_module 您可以將其更改為文件00-mpm.confeventworkerprefork(default) 00-mpm.conf ,該文件路徑為/etc/httpd/conf.modules.d

Apache MPM的參考是Apache MPM Common Directives

添加個人配置
# 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
  • 我的VM有2GB內存和2個處理器

在上述參考文獻中閱讀此配置的詳細信息。

重啟Httpd

 # 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 

我的apache服務器每秒收到2個請求。 之前,httpd進程的數量增加,直到系統停止。 設置MPM Prefork后,它工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM