LAMP服务器崩溃但内存和处理器使用率很低

时间:2016-05-28 03:11:41

标签: php mysql ajax apache performance

我的应用程序在LAMP服务器上运行时遇到了一些不好的时间。 我将解释该方案,下面我将告诉我的配置和一些AB结果。

我正在运行使用Laravel 4.2开发的应用程序。 这是一个quizz游戏,并且在某个时间我们有一组群体,每组有4个用户。 当他们到达这个阶段时,有很多ajax请求(检查正确的时间,因为JS定时器不精确我每3秒向数据库请求并将当前时间保存在数据库中),每2秒我检查一次答案在每个组的聊天室(一切都存储在MySQL数据库中)

我的服务器处理得很好,直到200,300个用户同时处理,但当它达到400时,500个用户服务器开始变得很慢,直到一切都变成噩梦,没人能再玩了。

ajax请求是简单的php文件,带有select和insert查询,没有嵌套循环,连接和其他可能会降低应用程序速度的东西。

以下是一些信息: 服务器配置: RAMNode上的-SSD VPS。 -8GB RAM - 40GB SSD - 4个vCores

服务信息: Ubuntu服务器14.4 Apache 2.4.7 PHP 5.5.9 MySQL 5.5.47 Laravel 4.2

我没有在此服务器上运行任何其他服务。 高峰时的内存使用率(600个用户同时玩组游戏):1.5GB 处理器使用率:22%。

AB结果:

root@server01:~# ab -r -n 27000 -c 900 -k -H "Accept-Encoding: gzip,             deflate"  http://repensegame.com.br/shout_benchmark.php
This is ApacheBench, Version 2.3 <$Revision: 1528965 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking repensegame.com.br (be patient)
Completed 2700 requests
Completed 5400 requests
Completed 8100 requests
Completed 10800 requests
Completed 13500 requests
Completed 16200 requests
Completed 18900 requests
Completed 21600 requests
Completed 24300 requests
Completed 27000 requests
Finished 27000 requests


Server Software:        Apache/2.4.7
Server Hostname:        repensegame.com.br
Server Port:            80

Document Path:          /shout_benchmark.php
Document Length:        687 bytes

Concurrency Level:      900
Time taken for tests:   157.934 seconds
Complete requests:      27000
Failed requests:        10265
(Connect: 0, Receive: 296, Length: 9673, Exceptions: 296)
Keep-Alive requests:    0
Total transferred:      24637886 bytes
HTML transferred:       18335742 bytes
Requests per second:    170.96 [#/sec] (mean)
Time per request:       5264.454 [ms] (mean)
Time per request:       5.849 [ms] (mean, across all concurrent requests)
Transfer rate:          152.35 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0  113 942.5      0   15004
Processing:    63 2302 11425.2    581  121540
Waiting:        0 1300 6014.9    579  102647
Total:         91 2415 11791.8    583  122541

Percentage of the requests served within a certain time (ms)
  50%    583
  66%    600
  75%    611
  80%    621
  90%    684
  95%   1554
  98%  60434
  99%  64164
 100%  122541 (longest request)
root@server01:~# free -m
             total       used       free     shared    buffers     cached
Mem:          8192       1518       6673         72          0       1318
-/+ buffers/cache:        200       7991
Swap:          256          0        256
root@server01:~#

的httpd.conf:

<IfModule mpm_worker_module>
    StartServers 10
    MinSpareServers 8
    MaxSpareServers 128
    MaxClients 2048
    ServerLimit  8000
</IfModule>

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

AccessFileName .htaccess

<FilesMatch "^\.ht">
    Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-    Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""     combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

IncludeOptional conf-enabled/*.conf

IncludeOptional sites-enabled/*.conf

ExtendedStatus On

Vhost conf。:

<VirtualHost *>
    DocumentRoot /var/www/html/public
    ServerName repensegame.com.br
    <Directory /var/www/html/public>
            allow from all
            Options None
            Require all granted
    </Directory>
    <Location /server-status>
        SetHandler server-status
        Order Deny,Allow
        Deny from all
        Allow from localhost
    </Location>
    ServerAlias *.repensegame.com.br
</VirtualHost>

我没有检测到任何慢查询。

那就是它。 抱歉,墙上的文字。

提前谢谢大家。

1 个答案:

答案 0 :(得分:0)

MaxClients = 2048致命。我倾向于建议20.你注意到300可能没问题。但那仅仅是基准?不是现实生活吗?

如果max_connections小于那个,那就特别糟糕了。

在某些时候(随应用程序而变化),最好将请求排队,而不是将请求启动,只是让它争用资源,从而延迟响应时间没有提高吞吐量。

什么是SHOW STATUS LIKE 'Max_used_connections';?什么是innodb_buffer_pool_size? (听起来它比它应该的低。)