TCP是流式协议,不保证一次通信传输完整的包,当这种情况发生在mina-http时会产生严重的bug,图中红框部分只是将前后收到的数据拼在一起,但下面处理的还是最近收到的不完整的msg;此为大坑!

  轻则不能正常处理http请求,重则由于mina-http内部使用状态机解析http请求,会导致内部状态异常,而调用decode的上层又是while (buff.hasRemain()) { decoder.decode(); }某些极端情况下会对这个buf重复decode,会导致收到大量的http请求,产生大量HttpRequest对象,Full GC,OOM, JVM Crash……

  看了mina-http这段代码,不知道作者是否真正测试过,对mina很失望……


后记:该问题在mina-2.0.8中得到了修复,建议使用mina-http的童鞋升级到2.0.8。

mina-http之坑的更多相关文章

  1. Mina的ProtocolEncoderOutput之坑

    这个问题是之前测试上万个连接的pingpong发现的,调了很久,但当时急着做其他事,就没有详细记录下来,现在回想起来也有点记不清具体哪儿了. 表现是在测试上万个连接的pingpong时会出现服务器挂起 ...

  2. 我的微信小程序入门踩坑之旅

    前言 更好的阅读体验请:我的微信小程序入门踩坑之旅 小程序出来也有一段日子了,刚出来时也留意了一下.不过赶上生病,加上公司里也有别的事,主要是自己犯懒,就一直没做.这星期一,赶紧趁着这股热乎劲,也不是 ...

  3. 第一次使用Linux服务器所栽之坑

    一直以来想拥有一个服务器,但是一直舍不得.9.21日终于心血来潮,买了一个腾讯云服务器.对比了一下腾讯云和阿里云,发现腾讯云比较良心,不仅有学生价1元/月,而且整体价格也比阿里云便宜.之前用过一次阿里 ...

  4. NIO的一坑一惑小记

    前言 不知不觉,已那么长时间没有更新东西了,说来真是汗颜啊.(主要是最近在技术上豁然开朗的感觉越来越少了-_-|||) 最近一直在学习Linux相关的东西.又一次接触到了I/O复用模型(select/ ...

  5. python学习中的一些“坑”

    一.交互列表元素时,需要注意的坑. 例如: array=[4,5,9,8,10,8,4,0,3,4]  最大的值与第一个元素交换,最小的值与最后一个元素交换 # -*- coding: UTF-8 - ...

  6. mina框架tcpt通讯接收数据断包粘包处理

    用mina做基于tcp,udp有通讯有段时间了,一直对编码解码不是很熟悉,这次做项目的时候碰到了断包情况,贴一下解决过程, 我接受数据格式如下图所示: unit32为c++中数据类型,代表4个字节,由 ...

  7. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  8. Socket通信封装MIna框架--含羞代放

    目录 核心类 各个击破 IoService IoFilter IoHandler 总结 # 加入战队 微信公众号 Mina异步IO使用的Java底层JNI框架,Mina提供服务端和客户端,将我们的业务 ...

  9. 一次flume exec source采集日志到kafka因为单条日志数据非常大同步失败的踩坑带来的思考

    本次遇到的问题描述,日志采集同步时,当单条日志(日志文件中一行日志)超过2M大小,数据无法采集同步到kafka,分析后,共踩到如下几个坑.1.flume采集时,通过shell+EXEC(tail -F ...

  10. mpvue实现微信小程序(欢迎踩坑)

    最近刚使用mpvue完成了微信小程序的开发,写点东西,做个记录. 首先依旧是两个传送门: 微信小程序文档:[https://developers.weixin.qq.com/miniprogram/d ...

随机推荐

  1. NCreport报表控件教程:设计页眉和页脚

    一.设计页眉 一般来说页眉部分一般是用于包含标题的内容, 首先我们会添加列标签到页眉部分,标签都是简单的文本,标签项一般是用于在报表上显示一些描述信息,标签都是静态项,所以它们的值不会有变化. 添加标 ...

  2. chrome + vi

    vimer们福利,一款能在chrome上面使用vim快捷键的插件 http://myhozz.com/2014/10/25/use-vim-in-chrome/

  3. 如何清除WebBrowser的Cookies

    var document = webBrowser1.Document; document.ExecCommand("ClearAuthenticationCache", fals ...

  4. session的销毁

    删除某个session标志: session.removeAttribute("sessionUserName");移除用户,但session不变,下次登陆的时候看到的sessio ...

  5. HTMl链接- target/ name

    下面解释一下链接标签的另外两个属性:target和name HTML 链接 - target 属性 使用 Target 属性,你可以定义被链接的文档在何处显示. 下面的这行会在新窗口打开文档: < ...

  6. animation 动画重播

    <style> div, body{ margin: 0; padding: 0; } body{ background-color: #333; } @keyframes running ...

  7. IOS的H5页面滑动不流畅的问题:

    IOS的H5页面滑动不流畅的问题: -webkit-overflow-scrolling : touch; 需要滑动的是哪块区域,就在哪里加上这段代码就OK

  8. Css绘制圆形,环形,椭圆等图形

    转载自http://blog.csdn.net/gongstrong123/article/details/50888758 绘制圆形,环形,椭圆 <!DOCTYPE html> < ...

  9. iOS 10 UserNotifications 使用说明

    本教程以贴代码为主.尽可能直观,少量说明. 注意:XCode8的需要手动开启主target Capabilities中的Push Notification. 关于创建多个target后真机测试的证书问 ...

  10. PHP---Mysql常用语法(增删改查)

    1.数据库操作:                                                                        创建数据库:create databas ...