0

私は1GBのVPSを持っていて、Apacheは起動からほとんどクロールに遅くなります。static.htmlファイルでApacheBenchを実行しましたが、違いはありません。ただし、このサイトにはMySQLとPHPの両方があり、大量のAJAXリクエストがあるので、それに合わせて調整したいと思います。

再起動すると、エラーログにこれがほぼすぐに表示されます。

[エラー]サーバーがMaxClients設定に達しました。MaxClients設定を上げることを検討してください

ab -n 1000 -c 1000

ショー:

Document Path:          /static.html
Document Length:        7 bytes

Concurrency Level:      1000
Time taken for tests:   57.784 seconds
Complete requests:      1000
Failed requests:        64
   (Connect: 0, Receive: 0, Length: 64, Exceptions: 0)
Write errors:           0
Total transferred:      309816 bytes
HTML transferred:       6552 bytes
Requests per second:    17.31 [#/sec] (mean)
Time per request:       57784.327 [ms] (mean)
Time per request:       57.784 [ms] (mean, across all concurrent requests)
Transfer rate:          5.24 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0   25  13.4     25      48
Processing:  1070 16183 15379.4   9601   57737
Waiting:        0 14205 15176.5   9591   42516
Total:       1070 16208 15385.0   9635   57783

Percentage of the requests served within a certain time (ms)
  50%   9635
  66%  20591
  75%  20629
  80%  36357
  90%  42518
  95%  42538
  98%  42556
  99%  42560
 100%  57783 (longest request)

phpファイルでabを実行すると、終了することがありますが、ほとんどの場合、終了せず、次のようなエラーが発生することがあります。

apr_socket_recv: Connection reset by peer (104)

socket: No buffer space available (105)

httpd.confアイテム:

Timeout 10
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 1

<IfModule prefork.c>
StartServers 3
MinSpareServers 5
MaxSpareServers 9
ServerLimit 40
MaxClients 40
MaxRequestsPerChild 5000
</IfModule>

上...(CPUと負荷1分はテスト中に非常に不安定です):

top - 10:44:51 up 11:50,  3 users,  load average: 0.17, 0.42, 0.90
Tasks:  84 total,   2 running,  82 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.8%us,  3.1%sy,  0.0%ni, 94.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1793072k total,   743604k used,  1049468k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                             
21831 mysql     18   0  506m  71m 6688 S  0.7  4.1   4:03.18 mysqld                               
 1828 root      15   0  113m  52m 2052 S  0.0  3.0   0:02.85 spamd                                
 1830 popuser   18   0  113m  51m  956 S  0.0  2.9   0:00.00 spamd                                
 8012 apache    15   0  327m  35m  17m S  3.7  2.0   0:11.83 httpd                                
 8041 apache    15   0  320m  28m  15m S  0.0  1.6   0:11.83 httpd                                
 8022 apache    15   0  321m  27m  14m S  2.3  1.6   0:11.05 httpd                                
 8033 apache    15   0  320m  27m  14m S  1.7  1.6   0:10.06 httpd 

ここで間違っている明らかなことがありますか?または、トラブルシューティングの次のステップは何ですか?

4

1 に答える 1

3

十分なメモリがないように思えます。同じサーバーで prefork と MySQL を使用して PHP を実行している場合、1GB はあまり多くありません。MaxClients は、40 ではなく、おそらく 10 ~ 20 になるはずです。

数週間前、私は Apache httpd を調整するスクリプトを書きました。これはおそらく、サーバーの最大値を決定するのに役立ちます。ウェブログのエントリはhttp://surniaulula.com/2012/11/09/check-apache-httpd-mpm-config-limits/にあります。スクリプトは Google Code にもあります。

楽しみ!

js.

于 2012-11-21T13:57:48.917 に答える