我试图通过一个“有很多连接和高stream量小包的千兆networking”来提高我的TCP吞吐量。 我的服务器操作系统是Ubuntu 11.10 Server 64bit。 通过TCP套接字连接到我的服务器(全部在同一端口)有大约50,000(和增长)的客户端。 我的数据包中的95%的大小为1-150字节(TCP报头和有效载荷)。 剩下的5%从150到4096+字节不等。 使用下面的configuration我的服务器可以处理高达30 Mbps(全双工)的stream量。 你可以请build议最佳实践调整操作系统为我的需要? 我的/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 = […]
当我使用默认设置时: vm.overcommit_memory = 0 vm.overcommit_ratio = 50 我可以从/proc/meminfo文件读取这些值: CommitLimit: 2609604 kB Committed_AS: 1579976 kB 但是,当我将vm.overcommit_memory从0更改为2 ,我无法启动在更改之前启动的同一组应用程序,特别是amarok。 我必须将vm.overcommit_ratio更改为300 ,因此可以增加限制。 现在,当我启动amarok时, /proc/meminfo显示如下: CommitLimit: 5171884 kB Committed_AS: 3929668 kB 这台机器只有1GiB的RAM,但是当vm.overcommit_memory设置为0时,amarok没有问题。但是在设置为2的情况下,amarok需要分配超过2GiB的内存。 这是一个正常的行为? 如果是这样,任何人都可以解释为什么,例如,firefox(消耗比amarok多4-6倍的内存)在更改之前和之后以相同的方式工作?
我想通过sysctl.conf / loader.conf / KENCONF /等来分享有关FreeBSD调优的知识。它最初是基于Igor Sysoev(nginx的作者)关于FreeBSD调优高达100,000到200,000个活动连接的介绍。 较新版本的FreeBSD可以处理更多。 调优适用于FreeBSD7 – FreeBSD-CURRENT。 自7.2和64以来,其中一些默认情况下调整良好。 以前的7.0有一些只是启动(通过/boot/loader.conf设置)或根本不存在。 sysctl.conf : # No zero mapping feature # May break wine # (There are also reports about broken samba3) #security.bsd.map_at_zero=0 # Servers with threading software apache2 / Pound may want to rise following sysctl #kern.threads.max_threads_per_proc=4096 # Max backlog size # Note Application […]