我正在尝试通过“具有大量连接和小数据包高流量的千兆网络”来提高我的 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 = …
Run Code Online (Sandbox Code Playgroud) 我有一个基于文件的数据库,它有大约 200 万个文件存储在 3 个级别的子目录中。
2/2/6253
2/2/6252
...
Run Code Online (Sandbox Code Playgroud)
文件 a 从 30 字节到 60 KB 不等。整个数据库是只读的。DB 大约为 125 GB。
补充:所有文件均由zlib(python)压缩
我想将其作为一个文件处理,其中包含文件系统。哪个文件系统是我最好的选择?
目前我使用以下脚本:
dd if=/dev/zero of=/my_file.iso bs=1024K count=60000
mkfs.ext4 -f /my_file.iso
mount -o loop /my_file.iso /mnt/
Run Code Online (Sandbox Code Playgroud) 用于在线多人游戏集群的 Debian 或 Ubuntu?(两个最新版本)
我计划运行:
当然,它将分布在 4-8 台机器上。
有一些使用 Debian 的经验 - 一切都很棒,但软件有点过时...... Ubuntu 的 ext 很少 - 目前运行起来很有魅力,但听说它有很多连接问题......(不知道这是不是真的,这就是我问你的原因。)