压力测试 Gateway与BusinessWorker进程显示busy

real

@walkor

我在workerman服务端用WebSocket进行图片接收与存储转发,压力测试出现连接断开;

测试环境:
gateway 4个进程;
businessWorker32个进程;

图片发送端50个;
每个3秒发送一张100kb左右的图片给workerman;

请问如何解决和优化?

4593 1 0
1个回答

walkor

不清楚业务逻辑是怎样的,如果50个客户端每个客户端3秒将一张100k图片广播给所有其它客户端,将带来大概每3秒50_50_100K=250M的通讯量,那么千兆网卡几乎是满负荷,百兆网卡则会打满,导致数据阻塞进而导致socket超时,连接断开。

如果是聊天发图
一般做法是将图片通过http post到单独的web服务器,并返回一个可以访问图片的url,然后websocket将url广播给其它客户端,其它客户端通过img标签http从单独的文本服务器下载这个图片,这样的好处是websocket通讯量很小,消息发送接收非常及时,不会因为广播大图造成网络阻塞无法聊天。

  • real 2015-01-22

    是的,目前正是如同你所述的方式进行。所有图 片由workerman存储,并转发url 给所有用户 。

    为了不让gateway阻塞丢包,导致客户端掉线, 目前是增加了更多的进程来接受请求,是否有更 好的建议?

年代过于久远,无法发表回答
🔝