3

修士論文のパフォーマンス テストを行っていますが、Symfony2 の単純なアプリケーションのパフォーマンスが非常に低下しています。これは単純なアプリで、1 つのクエリといくつかの計算だけです。

コマンドのテスト結果:

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

テストの前に、次の 2 つのコマンドを起動しました。

php app/console --env=prod cache:clear php app/console --env=prod cache:warmup

symfony のチェック ページには、intl 拡張子しかないことが示されているため、apc はおそらく問題ありません。

私のPHPバージョンは次のとおりです。

PHP 5.3.6-13ubuntu3.6 と Suhosin-Patch

env で他に何をチェックすればよいかについて誰かアドバイスをもらえますか?

4

1 に答える 1

5

コンピューターが負荷を処理できないなど、さまざまなことが考えられます。ただし、どこを見ればよいか、いくつかの指針を示すことができます。

いくつかのエラーが返されてい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デバッグのみに使用します。warnまたはerror本番用に設定する必要があります。

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 があることを確認してください。apache2 のみに約 1GB 必要です (少なくとも Linux では)。

小さな静的テキスト ファイル (約 2 KB) に対してパフォーマンスをチェックして、そのパフォーマンスがどのように見えるかを確認することもできます。その後、単純なものと照合して<? php echo 'Hello World!' ?>、php インタープリターのパフォーマンスへの影響を確認します。どちらのテストでも、Apache が現在の構成で何ができるかを示す必要があります。両方のテストでパフォーマンスが許容できる場合、遅いのはアプリです。

もう 1 つ試すことは、テストで同時実行を無効にして、それが役立つかどうかを確認することです。これは、アプリまたはデータベース アクセスの同時実行の問題を示しています。

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

それでも遅い場合は、Googleapache performance tuningと (MySQL をデータベースとして使用していると仮定して)mysql performance tuning

于 2012-05-15T14:07:29.443 に答える