zeromq高滞后

时间:2015-04-16 13:02:47

标签: java php sockets zeromq jzmq

我正面临ZMQ的一个奇怪问题,我只是无法调试。这些是组件:

  • Java ZMQ Server - 几乎是this example的精确副本。有一百个工人线程。
  • PHP客户端 - 使用REQ套接字进行简单请求回复。这是请求流程:

    $zcontext = new ZMQContext();
    $socket = new ZMQSocket($zcontext, ZMQ::SOCKET_REQ);
    $socket->connect(<address>);
    $startTime = microtime(true);
    $socket->send(<request>);
    $result = $socket->recv();
    $totalTime = microtime(true) - $startTime;
    

ZMQ套接字使用TCP,服务器和客户端都在同一台机器上。

PHP脚本由apache提供,我使用apache基准测试加载测试。我使用并发200来发出5000个请求。在PHP客户端,我记录请求回复所需的时间($totalTime)。在大多数情况下,这个时间非常短(低于500毫秒),但有时需要很长时间 - 有时甚至是60秒(发送+接收)。

我添加了一些额外的日志记录来找出问题发生的位置,事实证明,无论何时需要很长时间,几乎所有的时间都在PHP的发送和Java的接收之间 - 所以数据包需要很长时间才能到达服务器。

我没有设置任何特殊的ZMQ设置,或者做任何不寻常的事情,所以我不知道导致问题的原因。还应该注意的是,即使在较低的并发率(我也在100和150处测试)时问题仍然存在,但最大请求时间较短。

对不起,如果问题看起来模糊不清 - 我会提供可能需要的任何其他详细信息。

0 个答案:

没有答案