私は Web サービスに取り組んでおり、Redis ライブラリとして Predis を使用しています。クライアントが同じ TCP ソケットを再利用できるようにしたいと考えています。
現在、私のサービスで負荷テストを実行した後、TIME_WAIT 状態のソケットの数がサーバー上で急速に増加し、ある時点で Redis サーバーへの接続が拒否されることがわかりました。
PhpiredisStreamConnection を presistant オプションで使用する Redis のドキュメントによると、問題は修正されますが、これを接続コードに追加した後も、同じ問題に直面しています。何か案は?
redisインスタンスがフロントサーバーにないため、TCP接続を使用しています。
<?php
include 'autoload.php';
$parameters = array(
'tcp://some.host01:6379?database=0&alias=master&persistent=1',
'tcp://some.host02:6379?database=0&alias=slave&persistent=1',
);
$options = array( 'replication' => true ,
'connections' => array('tcp' => 'Predis\Connection\PhpiredisStreamConnection','unix' => 'Predis\Connection\PhpiredisStreamConnection') );
$predis = new Predis\Client($parameters, $options);
?>