鉴于现在有大量可用的 TCP 算法以及基于 Linux 的移动设备的兴起,需要考虑的理想算法是什么?
从阅读各种实现来看,Veno 和 Westwood+ 看起来很有趣,但我对了解真实数据很感兴趣。
networking performance mobile-devices performance-tuning tcp
在我的 CentOS 7 系统上,我习惯于tuned-adm在配置期间设置适合环境的配置文件,但在那之后,我再也没有更改该配置文件。似乎调整后的系统产生了一个/usr/bin/python -Es /usr/sbin/tuned -l -P用于动态监控和调整的进程 ( )。与我系统上的其他守护进程相比,这个进程使用了明显更多的内存。我想减少某个内存受限服务器上的非必要服务。如果我不使用涉及动态调整功耗等参数的配置文件,该tuned进程是否需要继续运行?我可以安全地停止该过程并从那时起保留我最初设置的配置文件吗?
在尝试为随机和线性访问选择高性能的 SATA 磁性硬盘驱动器(而不是 SSD)时,哪个应该是主要因素?
例如:具有 16MB 缓存的 10k RPM 驱动器是否会比具有 32MB 缓存的 7200RPM 驱动器性能更好
我是一名开发人员,设计网络服务时有好坏之分,iPhone 客户端将对其造成严重打击。iPhone 应用程序在过去一年的下载量超过 10 MM,现在我让用户在线进行互动。
我想为将托管我的基于 TCP 的网络服务的服务器调整 TCP 实现。发送的每个请求大小将是“小”(比如 < 256 字节)。好吧,你明白了,这是一个游戏服务器(令人震惊!)。
仅供参考,我对这个特定服务的 UDP(或 UDP 之上的可靠层,例如在 ENet 和 RakNet 中看到的)不感兴趣,因为游戏不是类似 Quake 的;必须可靠地接收所有数据包,这就是 TCP 的设计目的。因此,iPhone 客户端和服务之间的连接将是“长期存在的”(尽可能多——该死的隧道和电梯!)。
仅供参考,我在运行 Linux 2.6.18-164.9.1.el5 的服务器上的 100Mbps 上行链路上运行该服务。
我的目标是同时:
有大量与 TCP 相关的旋钮需要调整!经过一些基础研究后,似乎大多数人建议保留设置不变。但是,有许多设置似乎应该针对特定情况进行调整。我知道这有点模糊,这就是我寻求帮助的原因。
考虑在不稳定网络上调整小请求/响应同时尽可能减少内存的事情可能是:
考虑 TCP拥塞控制算法:
我的服务器默认使用bic,其“目标是设计一种协议,可以在高速长途网络上将其性能扩展到每秒数十千兆位,同时保持强大的公平性、稳定性和 TCP 友好性。”
仅从微小的描述来看,Westwood听起来更合适,因为它“旨在更好地处理大带宽延迟产品路径(大管道),由于传输或其他错误(管道泄漏)而导致潜在的数据包丢失,以及动态负载(动态管)”。
我是不是在这里太深入了,还是这门课程的标准?
你们通常为什么类型的东西调整 TCP/IP?如何?有哪些经验法则需要知道?
对于我的具体情况,您有哪些智慧之言?
非常感谢!
检查特定位置(例如已安装的 iSCSI 设备)的读/写性能的最简单方法是什么?
我怀疑我不能使用 hdparm,因为它的级别较低。我对吗?
在运行 mongostat 查看我们的 mongo 数据库时,我会经常看到锁定的 % 数字跳起来,有时高达 80%。下面是一些示例行:
insert query update delete getmore command flushes mapped vsize res faults locked % idx miss % qr|qw ar|aw netIn netOut conn time
0 10 7 0 0 17 0 2.27g 5g 1.63g 0 0.1 0 0|0 0|0 22k 7k 83 15:46:10
0 21 7 1 0 23 0 2.27g 5g 1.73g 0 0.1 0 0|0 0|1 11k 424k 83 15:46:11
0 28 10 3 0 28 0 2.27g 5g 1.73g 0 26.9 …Run Code Online (Sandbox Code Playgroud) 我试图了解在同一台机器上运行多个 nginx 实例(主实例)对性能的影响,而不是使用不同的服务器块将它们全部加载到单个实例中。使用多个 nginx 实例如何影响 worker_process 和 worker_connections 优化?
我看到大量建议表明 worker_process 应该反映内核数量,最多应该是内核数量的两倍。我也明白 worker_connections 应该与 ulimit 匹配,或者稍微低于 ulimit。提供太多连接可用,或者每个内核有太多工作人员应该会损害性能。
我有两个核心和 1024 的 ulimit,但我有 4 个 nginx 实例,每个实例都有以下设置:
worker_processes 4;
worker_connections: 1024;
Run Code Online (Sandbox Code Playgroud)
这不是worker_processes 16;和我有和 一样的效果worker_connections 4069;吗?
注意:当我说 nginx 实例时,让我说清楚,我的意思是有 4 个独立的 nginx 主进程,每个进程都提供了一个具有相似设置的不同配置文件,每个进程都有自己的工作人员。
注 2:这个场景是我继承的并且已经到位。我想弄清楚我是否应该改变 nginx 的配置方式并有一个明智的理由。
我在创建系统时使用默认参数创建了一个 XFS 文件系统。现在在看的输出xfs_info,它显示为0的值sunit和swidth。在这种情况下,我似乎无法解释 0 的含义。(的讨论sunit和swidth我都发现都集中在这些参数设置正确的值,而不是将它们设置为0)
# xfs_info .
meta-data=/dev/mapper/centos-root isize=256 agcount=8, agsize=268435455 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=1927677952, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=521728, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
Run Code Online (Sandbox Code Playgroud)
这必须是一个无知的问题,为此,我很抱歉,因为我是一个新手,XFS,但什么是0值的含义sunit和swidth?我如何才能找出 XFS 真正用于这些参数值的内容,以及这些值与适合我的 RAID 阵列的值之间的关系?(这是一个位于硬件 RAID 之上的 LVM 之上的 XFS 系统。)
我有一个 Hyper-V VM,主机和 VM 都运行 Windows Server 2016。VM 安装了 Exchange 2016,需要一个小时才能完全启动(所有 Exchange 服务)。它在启动和运行时实际上非常可靠,但长时间的重启是一个问题。我想弄清楚为什么它这么慢。简单的例子:如果我点击开始按钮,我可以在开始菜单出现之前慢慢数到 5。但我看不出任何明显的原因。这是任务管理器中的性能选项卡:
注意:我意识到这是 Exchange 2016 的一个低规格,但实际上用户很少,它用于测试。我想了解的是性能瓶颈在哪里,以及是否有任何我可以解决的问题。
如果我查看 Hyper-V 管理器,CPU 使用率通常显示 1%-15%。在其非常显示启动期间 CPU 使用率仅为 1%-2%。资源分配是默认的。还有其他几个虚拟机,但没有一个占用太多资源。
我有一个网站,其中包含从 nginx 的 http 缓存提供的所有页面,并且很少失效或过期。
平均总页面下载大小约为 2 MB 但尽管是一个没有有趣逻辑的静态站点,但我的服务器响应约为一秒
我记录了 nginx $request_time,它从服务器到大约 400 毫秒
每个文件平均为 20-30 KB
400 毫秒似乎很荒谬。
我支持Cloudflare并且
sendfile on;
tcp_nopush off;
tcp_nodelay on;
keepalive_timeout 300s;
keepalive_requests 10000;
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能将响应时间降低到 150 毫秒范围内?
编辑:我调整的第一部分。
意识到我没有开启 SSL OSCP。将代码调整为
# https://github.com/autopilotpattern/wordpress/issues/19
ssl_session_cache shared:SSL:50m;
ssl_session_timeout 1d;
ssl_certificate /etc/letsencrypt/live/site.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/site.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/site.com/chain.pem;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_stapling on;
ssl_stapling_verify on;
Run Code Online (Sandbox Code Playgroud)
我会反馈改进的。
编辑2:
这是从印度到美国西海岸服务器的 3G 连接的网页测试结果
performance ×5
linux ×3
networking ×2
nginx ×2
centos ×1
filesystems ×1
hard-drive ×1
hardware ×1
http-caching ×1
iphone ×1
iscsi ×1
mongodb ×1
mount ×1
optimization ×1
raid ×1
tcp ×1
tcpip ×1
ubuntu ×1
windows ×1
xfs ×1