CentOS6で専用のApacheWebサーバーを実行しています。12GBのメモリ4CPU
私のhttpd設定は、/ etc/httpd/conf /httpd.confから次のとおりです。
Timeout 60
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
サーバーは、次の設定でPreforkMPMを使用しています。
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 50
MaxClients 50
MaxRequestsPerChild 300
</IfModule>
これは、以前の設定から調整されました。
<IfModule prefork.c>
StartServers 8
MinSpareServers 5
MaxSpareServers 20
ServerLimit 256
MaxClients 256
MaxRequestsPerChild 4000
</IfModule>
問題
これらの値を数回変更してhttpdを再起動すると、常に同じことが起こります。 PIDの1つが最大11GBのメモリになるので、手動で強制終了すると、メモリが解放されます。
不正なPIDを強制終了して再起動した後の、無料の-m出力は次のとおりです。
total used free shared buffers cached
Mem: 11891 1132 10759 0 34 417
-/+ buffers/cache: 679 11212
Swap: 3827 227 3600
HttpdPIDがメモリを大量に消費しているようです。
top - 11:26:58 up 1:20, 1 user, load average: 2.87, 2.43, 4.25
Tasks: 174 total, 12 running, 162 sleeping, 0 stopped, 0 zombie
Cpu(s): 83.3%us, 4.4%sy, 0.0%ni, 10.4%id, 1.7%wa, 0.0%hi, 0.2%si, 0.0%st
Mem: 12177272k total, 4746532k used, 7430740k free, 50012k buffers
Swap: 3919840k total, 227860k used, 3691980k free, 776180k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3848 Apache 20 0 653m 216m 8908 R 31.3 1.8 0:11.77 httpd
3862 Apache 20 0 627m 194m 6824 R 30.3 1.6 0:09.62 httpd
3846 Apache 20 0 562m 126m 8728 R 28.6 1.1 0:10.20 httpd
3844 Apache 20 0 638m 204m 6704 R 27.9 1.7 0:08.40 httpd
3911 Apache 20 0 638m 203m 5880 R 27.6 1.7 0:04.92 httpd
3880 Apache 20 0 639m 205m 6724 R 27.3 1.7 0:06.76 httpd
3918 Apache 20 0 680m 246m 5820 S 25.3 2.1 0:05.38 httpd
3921 Apache 20 0 630m 197m 4440 R 24.0 1.7 0:01.63 httpd
3843 Apache 20 0 624m 191m 6684 R 23.3 1.6 0:07.50 httpd
2317 mysql 20 0 2463m 116m 3584 S 23.0 1.0 20:07.12 mysqld
3907 Apache 20 0 620m 187m 5856 R 23.0 1.6 0:04.35 httpd
3927 Apache 20 0 623m 188m 3624 R 22.6 1.6 0:00.68 httpd
3906 Apache 20 0 628m 195m 6080 R 20.6 1.6 0:04.27 httpd
3908 Apache 20 0 556m 123m 5880 S 8.0 1.0 0:02.79 httpd
3917 Apache 20 0 536m 104m 6064 S 2.7 0.9 0:00.39 httpd
3909 Apache 20 0 554m 121m 6120 S 2.3 1.0 0:01.19 httpd
3915 Apache 20 0 614m 182m 6372 S 2.3 1.5 0:02.51 httpd
3849 Apache 20 0 576m 144m 6700 S 1.7 1.2 0:06.54 httpd
3838 root 20 0 508m 84m 12m S 0.3 0.7 0:00.27 httpd
3931 Apache 20 0 509m 76m 4216 S 0.3 0.6 0:00.01 httpd
そして、そのうちの1つは常に反転し、すべてのメモリを使い果たします。
4076 Apache 20 0 7834m 7.2g 6172 S 11.6 62.2 0:34.86 httpd
MYSQLメモリ
[root@xxx ~]# ps aux | grep 'mysql' | awk '{print $6}'
4
148316
884
Apacheプロセスサイズ
[root@xxx ~]# ps aux | grep 'httpd' | awk '{print $6}'
93640
73196
133840
204352
170620
202056
120312
123600
123492
119048
131316
119744
200304
203160
118468
189300
203196
200024
124184
880
ピーク時のNETSTAT(不正なPIDがすべてのメモリを消費したとき)
[root@xxx ~]# netstat -plan | grep :80
tcp 0 0 :::80 :::* LISTEN 4235/httpd
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:47089 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:59089 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:35831 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:42075 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:49612 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:43970 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:173.199.114.19:44220 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:34405 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:33963 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:66.249.75.222:42306 ESTABLISHED 4241/httpd
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:173.199.115.67:53145 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:91.232.96.34:64675 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:107.20.53.252:40552 ESTABLISHED 4247/httpd
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:173.199.114.19:46658 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:46954 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:74.208.104.107:33988 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:51501 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:208.167.230.35:52628 TIME_WAIT -
tcp 0 0 ::ffff:74.208.104.107:80 ::ffff:74.208.104.107:33989 TIME_WAIT -
サーバーにはいくつかの異なる目的があります。それは次のとおりです。一連のWordpressサイトを実行します。さまざまな自動タスクのCRONジョブ(これらのほとんどを強制終了しましたが、問題は引き続き発生します)モバイルアプリケーションがサーバーに接続していますPOST経由。
質問:
1) What ELSE can I do to troubleshoot this problem?
2) How do I find WHICH PHP script might be running to take up all the memory? Perhaps this might be some runaway script that I haven't isolated.
3) Am I editing the right file for my httpd config, /etc/httpd/conf/httpd.conf?
4) What are the optimal settings for my server?
5) Could there be some kind of attack or rootkit thing happening?
[〜#〜]編集[〜#〜]
Maxlockおよびas(仮想メモリ)として/etc/security/limits.confを使用して2つの永続的なulimit制限を1048576KB(1GB)に課しました。これで行動が止まったようですが、これは一時的な対策に過ぎないと思います。私はまだいくつかの答えが必要です。
リック
2013年以降、質問にはまだ回答がないことに注意してください。うまくいけば、これは今解決されました
Webサーバーが攻撃を受けている可能性があります。 XML-RPC攻撃。これは、サーバーをノンストップで通過する大量のトラフィックを伴います。 access.log
をチェックして、ファイルアクセスパターンを確認してください。
どのPHPがほとんどのリソースを消費しているかを知るには、この answer の指示に従ってください。
はい。
PHPがどのように機能するか、同時ユーザーまたは計算能力に焦点を当てるかによって異なりますか?
#1と同じ。アクセスログを確認し、必要に応じてアプリケーションファイアウォールを有効にします。
それが役に立てば幸い。