libpcap抓包存到共享内存,其他进程处理的问题

sun_li3 2017-05-18 03:55:47
前提数据流量很大,2 - 10 Gbps;一般性能比较好的服务器(RMB10W以上);
问题是这样的,1、 pcap抓包 2、存入共享内存(多个内存队列) 3、其他处理数据包的进程处理共享内存中的包 老是出现有的内存队列满了,有的还有很大空,1到2就会失败丢包,要考虑包的连续性问题;
连续的包肯定要存入同一个内存队列, 不然处理的进程 找不到下一个包;
求指教;
还有个瓶颈,为了包的连续,只能一个线程抓多个网卡的包存入内存, 能不能多个线程抓多个网卡,存入多个内存队列,多个进程处理 共享内存队列中的包, 一定要保证包的连续性;
...全文
469 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun_li3 2017-06-06
  • 打赏
  • 举报
回复
引用 2 楼 lgbxyz 的回复:
这个跟你的业务流程相关啊, 有的队列满了 有的队列空很多 肯定是没有分配好资源, 因为考虑包的连续性,是不是有些业务的包比其他业务流量多很多,是不是应该分配更多的共享内存和处理进程。 瓶颈问题 抓包分析的目的肯定是收集指定数据, 一个网卡上抓的包难道不能分析数据吗?为什么非要和其他网卡抓的包放到同一个共享内存队列里, 各自独立处理汇总结果不就好了吗
—————————————————————————————————————— 分配资源是根据ip地址分类进行分配的,更多的共享内存在2-10Gbps的流量情况下,很快就满了;更多的处理进程就要升级换代服务器硬件,成本高; 一个网卡上抓的数据是不同的,比如http,ftp,dns等,按你说的话,一个网卡就要对应几个不同的业务处理进程, 服务器有10-12个网卡;就要好几十个进程处理;
LubinLew 2017-05-26
  • 打赏
  • 举报
回复
这个跟你的业务流程相关啊, 有的队列满了 有的队列空很多 肯定是没有分配好资源, 因为考虑包的连续性,是不是有些业务的包比其他业务流量多很多,是不是应该分配更多的共享内存和处理进程。 瓶颈问题 抓包分析的目的肯定是收集指定数据, 一个网卡上抓的包难道不能分析数据吗?为什么非要和其他网卡抓的包放到同一个共享内存队列里, 各自独立处理汇总结果不就好了吗
sun_li3 2017-05-24
  • 打赏
  • 举报
回复
顶一下,有经验的师兄师姐求解答

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧