表现不佳(Poor performance)

2019-07-29 10:02发布

我在做性能测试,为我的硕士论文,我得到Symfony2的简单应用程序的性能非常差。 这是简单的应用程序,一个查询和一些数学。

测试结果的命令:

AB-C10 -t60 HTTP://sf2.cities.localhost/app.php

Server Software:        Apache/2.2.20
Server Hostname:        sf2.cities.localhost
Server Port:            80

Document Path:          /app.php
Document Length:        2035 bytes

Concurrency Level:      10
Time taken for tests:   60.162 seconds
Complete requests:      217
Failed requests:        68
   (Connect: 0, Receive: 0, Length: 68, Exceptions: 0)
Write errors:           0
Non-2xx responses:      68
Total transferred:      393876 bytes
HTML transferred:       321102 bytes
Requests per second:    3.61 [#/sec] (mean)
Time per request:       2772.458 [ms] (mean)
Time per request:       277.246 [ms] (mean, across all concurrent requests)
Transfer rate:          6.39 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   2.1      0      11
Processing:   230 2641 2493.1   1778   17146
Waiting:      230 2641 2493.1   1778   17146
Total:        230 2642 2492.9   1778   17146

测试之前,我推出了两个命令:

PHP应用程序/控制台--env = PROD缓存:清晰的PHP的应用程序/控制台--env = PROD缓存:预热

Symfony的确认页告诉我,我只是没有国际扩展,所以APC可能是好的。

我的PHP版本是:

PHP 5.3.6-13ubuntu3.6用了Suhosin-补丁

可能有人给我说说还有什么我应该在ENV检查的建议吗?

Answer 1:

它可以是任何数量的东西,包括您的计算机无法处理负载。 我可以给你一些指点哪里看,虽然。

你得到了一些错误,返回Failed requests: 68 。 看看到Apache日志文件,他们可能会指出问题。 如果你没有发现他们什么确保启用了日志记录和您的配置文件具有正确的日志级别设置。 您的VirtualHost定义应该包含这样的

 LogLevel debug
 CustomLog /var/log/apache2/access-localhost.log vhost_combined
 ErrorLog /var/log/apache2/error-localhost.log

使用LogLevel debug仅用于调试。 你会想将它设置为warnerror进行生产。

在php.ini和脚本启用错误日志记录,并检查你的PHP错误日志中的任何问题。

确保您的apache2.conf配置正确,尤其是MPM模块。 这是一个标准,尽管远非完美配置:

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

请确保你有足够的RAM,你需要1GB左右apache2的唯一(至少在linux下)

您也可以尝试检查性能,对小静的文本文件(约2KB),看看是什么表现的样子。 对简单的入住手续后<? php echo 'Hello World!' ?> <? php echo 'Hello World!' ?> <? php echo 'Hello World!' ?>看到PHP解释器的性能影响。 这两项测试应该给你一个什么样的Apache是​​能够与当前配置的指示。 如果表现在两个测试中可以接受的,这是你的应用程序,很慢。

试试另一件事情是在您的测试禁用并发,看看是否有帮助。 这将表明您的应用程序或数据库访问的并发问题。

ab -c1 -t60 http://sf2.cities.localhost/app.php

如果它仍然缓慢,谷歌apache performance tuning和(假设你使用MySQL作为数据库) mysql performance tuning



文章来源: Poor performance