1

私は 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);

?>
4

1 に答える 1

2

ドキュメントによると、Predis は、php プロセスが永続プロセスとして構成されている場合、永続的な接続に対して機能します。詳細については、次を参照してください。

https://github.com/joindin/joindin-web2/blob/master/vendor/predis-0.8/FAQ.md

http://php-fpm.org/

于 2014-06-12T06:51:38.820 に答える