0
我在Windows上开发服务器。我的服务器使用IOCP套接字和数据库。通常的情况是用户长时间连接并保持连接状态。虽然连接的用户可以从服务器请求一些数据。通常请求与数据库访问相关联。客户端请求消息长度可变。消息是与谷歌protobuf数据包和固定长度的头在每条消息之前发送。服务器内存管理
关于内存管理,我可以做些什么不同的事情,而不是使用通常的新/删除功能,可以加快我的服务器速度?我现在唯一的想法是拥有一个头缓冲池并重用它们,而不是频繁地分配/取消分配它们。 你怎么看待为每个用户分开堆,所以在用户断开连接时,我可以一次删除所有用户数据,而不是使用一打删除调用? 有关此主题的任何提示或技巧,表示赞赏。
谢谢。
哇......代码是惊人的。我有一个问题。与'正常'读取相比,零字节读取是否真的使许多活动连接的内存使用量有所不同?我猜它可能只有更大的数据包?我会开始玩一下。谢谢! – 2015-03-09 07:37:51
零字节的读取过去比现代硬件上的大RAM更有用。这个想法是,如果你有100,000个连接,每个连接有一个读取挂起,那么你有大量的内存锁定,并有一个“锁定页面限制”。据我所知,自XP以来我没有使用零字节读取。 – 2015-03-09 07:41:47