1

symfony 2 で奇妙な問題が発生しています。カウント ダウン タイマー (時間、分、日をカウント ダウン) を備えたアプリがあります。

この 1 分ごとのタイマーは 90% の確率で完全に機能しますが、負荷が高い場合、タイマーがスタックして変更されません (おそらく、キャッシュされたバージョンを提供していたため)。

負荷テスト スクリプトを使用してエラーを再現することはできませんでした。サイトに多くの実際のユーザーがいる場合にのみ発生するようです。

キャッシュ オプションは次のように設定されています。

class AppCache extends HttpCache
{

   protected function getOptions()
   {
       return array(
           'debug'                  => true,
           'default_ttl'            => 1 * 60 * 60,
           'private_headers'        => array('Authorization', 'Cookie'),
           'allow_reload'           => false,
           'allow_revalidate'       => false,
           'stale_while_revalidate' => 2,
           'stale_if_error'         => 60,
       );
    }
}

散発的にキャッシュされている応答には、次のヘッダーがあります。

HTTP/1.1 200 OK
Date: Fri, 17 May 2013 09:36:55 GMT
Server: Apache/2.2.16 (Debian)
X-Powered-By: PHP/5.3.3-7+squeeze15
P3P: CP="CURa CUR NID ADM ADMa DEV DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Cache-Control: private
X-Symfony-Cache: GET /my-app/show: miss
Vary: Accept-Encoding
Content-Encoding: gzip
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

フロント コントローラーのスクリプト ファイルは次のとおりです。

<?php header('P3P: CP="CURa CUR NID ADM ADMa DEV DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');


use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\ClassLoader\ApcClassLoader;


$loader = require_once __DIR__.'/app/bootstrap.php.cache';
require_once __DIR__.'/app/AppKernel.php';
require_once __DIR__.'/app/AppCache.php';

$loader = new ApcClassLoader('sf2', $loader);
$loader->register(true);



$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel = new AppCache($kernel);
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();

$response = $kernel->handle($request);
$response->send();

$kernel->terminate($request, $response);

このアクションでは明示的に http キャッシュを設定していません。また、カーネルをラップするために AppCache を使用しているという事実を除けば、何かをキャッシュするように設定していません。これを行うと、サイトのパフォーマンスに大きな違いが生じることは間違いありません。これを外すと、負荷テスト中に負荷が非常に急速に上昇するからです。

4

0 に答える 0