Linux C++通讯架构【七】:服务器完善

  • 心跳包:
    1. 就是个普通的数据包,就是消息码不同而已;一般每隔几十秒(30s),客户端主动把心跳包返回给客户端,服务端收到了,返回一个心跳包。
    2. 如果客户端不发,服务器会怎样?=》在约定的时间*3(90s)后,关闭socket连接
    3. 所以如果客户端发了心跳包,90s后没有接收到,就应该主动关闭连接,并尝试再次连接
    4. 也叫ping包,心跳包一般不需要包体
  • 遗漏问题:
    1. 收到太多数据处理不过来:
      1. epoll技术限速,在epoll红黑树节点中,把epoll【可读】通知干掉
      2. 增加处理线程
    2. 积压太多发送不过来:
      1. 服务器干掉一些要发送的数据(客户端崩,总比服务器崩要好)
      2. 服务器检查客户端是否只发包,不收包(一个int接收到了 int++,发送成功了 int--)
  • 性能优化:
    1. 绑定cpu
      1. 一个进程运行在一个核上,nginx有这个函数【cpu亲和性】。(cpu核数=进程数)
      2. 为啥绑定好呢?cpu缓存行,一下在这个核运行,一下又在另一个核上运行(此时缓存失效)。
      3. 但如果进程数就是大于cpu核数呢? =》三级缓存,cpu所有核的共享缓存
    2. 提升进程优先级 =》分配到更多的cpu时间片
  • 消息的跳跃发送:
    1. 比如张三的接收缓冲区满了,就得跳过发李四的。
    2. 其实指的是跳过张三的包2发张三的包3

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值