我正在尝试通过“具有大量连接和小数据包流量的千兆网络”来提高TCP吞吐量.我的服务器操作系统是Ubuntu 11.10 Server 64bit.

有大约50.000(和不断增长的)客户端通过TCP套接字连接到我的服务器(所有客户端都在同一个端口上).

95%的数据包大小为1-150字节(TCP标头和有效负载).其余5%从150到4096字节不等.

使用下面的配置,我的服务器可以处理高达30 Mbps(全双工)的流量.

您能否根据我的需求建议最佳实践来调整操作系统?

我的/etc/sysctl.cong看起来像这样:

kernel.pid_max = 1000000

net.ipv4.ip_local_port_range = 2500 65000

fs.file-max = 1000000

#

net.core.netdev_max_backlog=3000

net.ipv4.tcp_sack=0

#

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.somaxconn = 2048

#

net.ipv4.tcp_rmem = 4096 87380 16777216

net.ipv4.tcp_wmem = 4096 65536 16777216

#

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_mem = 50576 64768 98152

#

net.core.wmem_default = 65536

net.core.rmem_default = 65536

net.ipv4.tcp_window_scaling=1

#

net.ipv4.tcp_mem= 98304 131072 196608

#

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_rfc1337 = 1

net.ipv4.ip_forward = 0

net.ipv4.tcp_congestion_control=cubic

net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_tw_reuse = 0

#

net.ipv4.tcp_orphan_retries = 1

net.ipv4.tcp_fin_timeout = 25

net.ipv4.tcp_max_orphans = 8192

这是我的极限:

$ulimit -a

core file size (blocks, -c) 0

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 193045

max locked memory (kbytes, -l) 64

max memory size (kbytes, -m) unlimited

open files (-n) 1000000

pipe size (512 bytes, -p) 8

POSIX message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu time (seconds, -t) unlimited

max user processes (-u) 1000000

[添加]

我的网卡如下:

$dmesg | grep Broad

[ 2.473081] Broadcom NetXtreme II 5771x 10Gigabit Ethernet Driver bnx2x 1.62.12-0 (2011/03/20)

[ 2.477808] bnx2x 0000:02:00.0: eth0: Broadcom NetXtreme II BCM57711E XGb (A0) PCI-E x4 5GHz (Gen2) found at mem fb000000, IRQ 28, node addr d8:d3:85:bd:23:08

[ 2.482556] bnx2x 0000:02:00.1: eth1: Broadcom NetXtreme II BCM57711E XGb (A0) PCI-E x4 5GHz (Gen2) found at mem fa000000, IRQ 40, node addr d8:d3:85:bd:23:0c

[ADDED 2]

ethtool -k eth0

Offload parameters for eth0:

rx-checksumming: on

tx-checksumming: on

scatter-gather: on

tcp-segmentation-offload: on

udp-fragmentation-offload: off

generic-segmentation-offload: on

generic-receive-offload: on

large-receive-offload: on

rx-vlan-offload: on

tx-vlan-offload: on

ntuple-filters: off

receive-hashing: off

[ADDED 3]

sudo ethtool -S eth0|grep -vw 0

NIC statistics:

[1]: rx_bytes: 17521104292

[1]: rx_ucast_packets: 118326392

[1]: tx_bytes: 35351475694

[1]: tx_ucast_packets: 191723897

[2]: rx_bytes: 16569945203

[2]: rx_ucast_packets: 114055437

[2]: tx_bytes: 36748975961

[2]: tx_ucast_packets: 194800859

[3]: rx_bytes: 16222309010

[3]: rx_ucast_packets: 109397802

[3]: tx_bytes: 36034786682

[3]: tx_ucast_packets: 198238209

[4]: rx_bytes: 14884911384

[4]: rx_ucast_packets: 104081414

[4]: rx_discards: 5828

[4]: rx_csum_offload_errors: 1

[4]: tx_bytes: 35663361789

[4]: tx_ucast_packets: 194024824

[5]: rx_bytes: 16465075461

[5]: rx_ucast_packets: 110637200

[5]: tx_bytes: 43720432434

[5]: tx_ucast_packets: 202041894

[6]: rx_bytes: 16788706505

[6]: rx_ucast_packets: 113123182

[6]: tx_bytes: 38443961940

[6]: tx_ucast_packets: 202415075

[7]: rx_bytes: 16287423304

[7]: rx_ucast_packets: 110369475

[7]: rx_csum_offload_errors: 1

[7]: tx_bytes: 35104168638

[7]: tx_ucast_packets: 184905201

[8]: rx_bytes: 12689721791

[8]: rx_ucast_packets: 87616037

[8]: rx_discards: 2638

[8]: tx_bytes: 36133395431

[8]: tx_ucast_packets: 196547264

[9]: rx_bytes: 15007548011

[9]: rx_ucast_packets: 98183525

[9]: rx_csum_offload_errors: 1

[9]: tx_bytes: 34871314517

[9]: tx_ucast_packets: 188532637

[9]: tx_mcast_packets: 12

[10]: rx_bytes: 12112044826

[10]: rx_ucast_packets: 84335465

[10]: rx_discards: 2494

[10]: tx_bytes: 36562151913

[10]: tx_ucast_packets: 195658548

[11]: rx_bytes: 12873153712

[11]: rx_ucast_packets: 89305791

[11]: rx_discards: 2990

[11]: tx_bytes: 36348541675

[11]: tx_ucast_packets: 194155226

[12]: rx_bytes: 12768100958

[12]: rx_ucast_packets: 89350917

[12]: rx_discards: 2667

[12]: tx_bytes: 35730240389

[12]: tx_ucast_packets: 192254480

[13]: rx_bytes: 14533227468

[13]: rx_ucast_packets: 98139795

[13]: tx_bytes: 35954232494

[13]: tx_ucast_packets: 194573612

[13]: tx_bcast_packets: 2

[14]: rx_bytes: 13258647069

[14]: rx_ucast_packets: 92856762

[14]: rx_discards: 3509

[14]: rx_csum_offload_errors: 1

[14]: tx_bytes: 35663586641

[14]: tx_ucast_packets: 189661305

rx_bytes: 226125043936

rx_ucast_packets: 1536428109

rx_bcast_packets: 351

rx_discards: 20126

rx_filtered_packets: 8694

rx_csum_offload_errors: 11

tx_bytes: 548442367057

tx_ucast_packets: 2915571846

tx_mcast_packets: 12

tx_bcast_packets: 2

tx_64_byte_packets: 35417154

tx_65_to_127_byte_packets: 2006984660

tx_128_to_255_byte_packets: 373733514

tx_256_to_511_byte_packets: 378121090

tx_512_to_1023_byte_packets: 77643490

tx_1024_to_1522_byte_packets: 43669214

tx_pause_frames: 228

linux tcp 包大小,linux – 通过大量连接和小数据包流量高的千兆网络提高TCP性能...相关推荐

  1. linux tcp 包大小,Linux TCP数据包接收处理 --- 转

    在接收流程一节中可以看到数据包在读取到用户空间前,都要经过tcp_v4_do_rcv处理,从而在receive queue中排队. 在该函数中,我们只分析当连接已经建立后的数据包处理流程,也即tcp_ ...

  2. TCP/IP详解--TCP传输小数据包效率问题

    摘要:当使用TCP传输小型数据包时,程序的设计是相当重要的.如果在设计方案中不对TCP数据包的 延迟应答,Nagle算法,Winsock缓冲作用引起重视,将会严重影响程序的性能.这篇文章讨论了这些 问 ...

  3. python构造icmp数据包_如何在python中构造ICMP数据包

    为了学习,我目前正在尝试创建一个简单的python porgram来向某个设备发送ICMP ping数据包.为了开始,我查看了python模块Pyping:https://github.com/Akh ...

  4. zstd优秀的数据压缩算法,大数据小数据包

    zstd是Facebook在2016年开源的新无损压缩算法,优点是压缩率和压缩/解压缩性能都很突出. 在我们测试的文本日志压缩场景中,压缩率比gzip提高一倍,压缩性能与lz4.snappy相当甚至更 ...

  5. 网络设置巨形帧_修改网卡配置连接千兆网络的详细步骤

    原标题:"Win7电脑修改网卡配置连接千兆网络的方法是什么?"相关电脑问题教程分享. - 来源:191路由网. 目前有很多的电脑都是使用realtek网卡的,当时奇怪的是网卡连接到 ...

  6. win7网络计算机和设备,Win7电脑修改网卡配置连接千兆网络的方法是什么?

    目前有很多的电脑都是使用realtek网卡的,当时奇怪的是网卡连接到h3或者d-link千兆交换机的时候,那么网速就会变得非常缓慢,网速直接下降到100兆或者10兆,想要实现千兆的连接就需要重启计算机 ...

  7. linux df 目录大小,Linux命令du df查看文件和文件夹大小

    当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力. du可以查看文件及文件夹的大小. 两者配 ...

  8. 抓wifi包工具linux,测试工具之在Ubuntu使用Wireshark抓无线数据包

    众所周知,在windowns下使用wireshark只能抓取有线数据包,要抓无线数据包只能用Omnipeek:而在Linux下,我们可以直接使用wireshark来抓取无线数据包 1. 安装wires ...

  9. Wireshark使用(捕获过滤器、显示过滤器、TCP交互抓包示例、抓取本地回环数据包等)

    1.捕获过滤器规则 1.1 作用   捕获过滤器在开始捕捉之前设置,用于从源头控制被过滤的包内容,仅符合规则的包会被捕获并记录进捕获日志文件. 1.2 语法规则 字段:[Protocol][Direc ...

最新文章

  1. 你真会IDEA的调试功能吗?这4个技巧带你起飞!
  2. Python 技术篇-pip安装的python库缓存位置查看方法,如何查看python库源码
  3. shell sqlplus执行sql文_各主流数据库非交互执行
  4. 机器学习中的训练与损失 test and loss (训练loss不下降原因集合)
  5. SAP Spartacus SpartacusB2cConfigurationModule 的使用场景
  6. 38 CO配置-控制-产品成本控制-成本对象控制-实际成本核算/物料分类帐-分配材料分类帐类型给评估区域
  7. windows linux复制文件夹命令,ubuntu下复制目录和文件的指令以及和windows下的copy方式...
  8. html5与css3是互联网发展趋势,五大主流浏览器CSS3和HTML5兼容性比拼
  9. 文件一另存为电脑就卡住_文件太多怎么办?用Excel做一个简易目录!轻松管理多个文件...
  10. postman 字符串中有冒号_【接口测试】Postman入门09 Postman获取HTTP请求
  11. 使用k8s安装minio
  12. 解决Connectify和校园天翼宽带L2TP客户端的不兼容问题
  13. shell清空数据库表
  14. Luogu 3332 [ZJOI2013]K大数查询
  15. Google Chrome谷歌浏览器清理缓存的常用方法
  16. 删除页眉页脚中横线的方法
  17. 数据分析学习总结笔记06:T检验的原理和步骤
  18. 计算机网络连接叹号,【电脑网络连接感叹号】电脑网络连接感叹号怎么回事_电脑网络连接感叹号怎么办_亲亲宝贝网...
  19. 干货 | SQL 进阶技巧
  20. bzoj 5285: [Hnoi2018]寻宝游戏

热门文章

  1. cocos2d-x ios游戏开发初认识(六) 渲染的优化
  2. ZT:与其怨天尤人,不如全力以赴;若想改变世界,你必须先从改变自己开始!...
  3. Omi框架学习之旅 - 插件机制之omi-finger 及原理说明
  4. 三层着装概念 ,是户外着装的基本要求
  5. Linux线程时间片如何修改,请教如何修改线程时间片
  6. java禁止ie后退_Java开发网 - 【讨论】html页面禁用右键,浏览器后退、刷新,以及相应快捷键...
  7. matlab用ezmesh绘制单位球,Matlab------------命令大全2
  8. Potplayer使用必看
  9. java如何将string转换成date_java如何将string类型转为date类型?Java的转型方法
  10. roobo机器人怎么唱歌_日本“观音”机器人问世,可以陪僧人念佛经