@walkor
我在workerman服务端用WebSocket进行图片接收与存储转发,压力测试出现连接断开;
测试环境: gateway 4个进程; businessWorker32个进程;
图片发送端50个; 每个3秒发送一张100kb左右的图片给workerman;
请问如何解决和优化?
不清楚业务逻辑是怎样的,如果50个客户端每个客户端3秒将一张100k图片广播给所有其它客户端,将带来大概每3秒50_50_100K=250M的通讯量,那么千兆网卡几乎是满负荷,百兆网卡则会打满,导致数据阻塞进而导致socket超时,连接断开。
如果是聊天发图 一般做法是将图片通过http post到单独的web服务器,并返回一个可以访问图片的url,然后websocket将url广播给其它客户端,其它客户端通过img标签http从单独的文本服务器下载这个图片,这样的好处是websocket通讯量很小,消息发送接收非常及时,不会因为广播大图造成网络阻塞无法聊天。
是的,目前正是如同你所述的方式进行。所有图 片由workerman存储,并转发url 给所有用户 。
为了不让gateway阻塞丢包,导致客户端掉线, 目前是增加了更多的进程来接受请求,是否有更 好的建议?
不清楚业务逻辑是怎样的,如果50个客户端每个客户端3秒将一张100k图片广播给所有其它客户端,将带来大概每3秒50_50_100K=250M的通讯量,那么千兆网卡几乎是满负荷,百兆网卡则会打满,导致数据阻塞进而导致socket超时,连接断开。
如果是聊天发图
一般做法是将图片通过http post到单独的web服务器,并返回一个可以访问图片的url,然后websocket将url广播给其它客户端,其它客户端通过img标签http从单独的文本服务器下载这个图片,这样的好处是websocket通讯量很小,消息发送接收非常及时,不会因为广播大图造成网络阻塞无法聊天。
是的,目前正是如同你所述的方式进行。所有图 片由workerman存储,并转发url 给所有用户 。
为了不让gateway阻塞丢包,导致客户端掉线, 目前是增加了更多的进程来接受请求,是否有更 好的建议?