Swoole-src: swoole_client 在 Mac 下对 unix socket 不起作用

Created on 20 Jul 2016  ·  6Comments  ·  Source: swoole/swoole-src

在 Mac OS X 下,用 swoole_client 连接 swoole_server 创建的 unix socket 服务器,收不到响应。但是同样的程序,在 Linux 下没有问题。

另外,就是 swoole_client 在 Linux 下连接 swoole_server 创建的 TCP 服务器,读写性能很低,比 unix socket 要低很多。但是在 Mac OS X 上连接 TCP 服务器的读写性能,跟 Linux 下的 unix socket 性能一样快。

Most helpful comment

性能问题已解决,是因为没有设置 open_tcp_nodelay 为 true 造成的,将 open_tcp_nodelay 设置为 true,之后,性能跟 Unix Socket 一样快了。

All 6 comments

今天把 Mac OS X 下的 swoole 更新到 1.8.7 之后,测试 Unix Socket 客户端,已经没有问题了。

现在只剩下 swoole_client 在 Linux 下连接 swoole_server 创建的 TCP 服务器,读写性能低的问题了。

读写性能低你具体指的是什么?有测试代码吗?

我一会儿发一下测试代码。

测试代码放在这里了:https://github.com/hprose/hprose-swoole/tree/master/examples/src

先运行 UnixServer.php,再运行 UnixClientBenchmark.php:

在 Mac OS X 10.11.6,PHP 5.5.38,swoole 1.8.7 下,运行结果为:

float(1.6292669773102)
float(0.00016292669773102)

在 Ubuntu 64bit 16.04,PHP 7.0,swoole 1.8.7 下,运行结果为:

float(0.74352622032166)
float(7.4352622032166E-5)

先运行 TcpServer.php,再运行 TcpHDClientBenchmark.php:

在 Mac OS X 10.11.6,PHP 5.5.38,swoole 1.8.7 下,运行结果为:

float(1.7051320075989)
float(0.00017051320075989)

在 Ubuntu 64bit 16.04,PHP 7.0,swoole 1.8.7 下,运行结果为:

float(79.967931032181)
float(0.0079967931032181)

运行 TcpFDClientBenchmark.php:

在 Mac OS X 10.11.6,PHP 5.5.38,swoole 1.8.7 下,运行结果为:

float(1.2581930160522)
float(0.00012581930160522)

在 Ubuntu 64bit 16.04,PHP 7.0,swoole 1.8.7 下,运行结果为:

float(8.406779050827)
float(0.0008406779050827)

上面的 UnixClient 的实现代码(UnixClient 也有全双工和半双工之分,默认是半双工的)跟 TcpClient 的实现代码是一样的(只是地址不同)。

从上面的运行结果可以看出:

在 Mac OS X 下,Unix Socket 和 Tcp 的客户端运行效率是差不多的。全双工模式比半双工模式稍快,但并没有数量级的差别。

但是在 Linux 下,Tcp 客户端的性能明显不对劲,半双工模式执行时间是全双工模式的 10 倍,全双工模式执行时间是 Unix Socket 半双工模式的 10 倍。

在 Ubuntu 64bit 16.04,PHP 7.0.4,swoole 1.8.8-rc1 下测试,效果一样慢。

性能问题已解决,是因为没有设置 open_tcp_nodelay 为 true 造成的,将 open_tcp_nodelay 设置为 true,之后,性能跟 Unix Socket 一样快了。

Was this page helpful?
0 / 5 - 0 ratings

Related issues

erDong01 picture erDong01  ·  3Comments

andreybolonin picture andreybolonin  ·  4Comments

sshymko picture sshymko  ·  3Comments

Gemorroj picture Gemorroj  ·  3Comments

jobs-git picture jobs-git  ·  3Comments