socket客户端怎么接收服务器推送的海量数据写到内存中才能造成服务器不堵塞,大概每秒有30m的数据量。求帮助,求方案。
注:本人通过多线程处理接收还是会造成服务器堵塞(代码中就只有通过MemCached写将数据写入内存中的代码)。

解决方案 »

  1.   

    有没有试试提高buffer size?
    setReceiveBufferSize
    试试提到56k,默认好像只有8k及其影响速度还有你是怎么多线程处理的?
      

  2.   

    服务器堵塞? 你这先要看网络带宽多少,网卡带宽,然后看操作系统网络模块底层的设定。比如,底层buffer或者窗口大小。backlog数量。然后看操作系统对用户的资源授权。然后再看程序。另外,客户端接收数据服务端会堵塞?这是那门子设计。。服务端不是多线程的么?服务端一个线程在读取数据到客户端,你整个服务端阻塞? 
    你服务器是不是oom了?不是io阻塞,你是读取太多数据到内存,javaheap爆掉了?
      

  3.   

    要千兆网才能完成这种数据量的传输。可以考虑的方案有:
    一,换成千兆网,进行数据传输。
    二,更改传输协议,将不必要的数据或相同的数据,省去不传输。(如果无效数据过多)
    三,压缩后传输,传输后解压。(GZIP压缩效果好但压缩速度慢,ZIP快很多)