我们有两台不同的服务器运行相同的服务器应用程序。它们必须处理自定义协议中的大量连接(超过 2000 个),我们的用户使用我们的程序连接到我们的服务器。
机器 1目前正在处理3300连接,并且有一个 Intel i73770和16 GB内存与Windows 2008 R2
机器 2目前正在处理2400连接,并且有一个 Intel i74770和32GB内存与Windows 2012
两台机器均使用6-9%CPU 的占用率,小于1%网络,0%HD,来自我们办公室和相同网卡的 ping 值类似(66ms 和 73ms)。
机器 2 是更加强大并必须处理更少的连接, 但是慢得多比机器 1 好!
我无法用数字来衡量速度有多慢,但我们的服务需要快速响应才能正常工作,而机器 2 的速度明显较慢。
问题可能出在我们的 .exe 中(即使两台机器的问题相同),但我们认为问题也可能出在 Windows 2012 上。
有人知道是什么导致了这种差异吗?
编辑:感谢您的回答和对此的兴趣!我正在添加您请求的信息:
- 我们的程序在两个或多个用户之间创建单向压缩数据流,因此他们必须连接在同一台机器上。
- 我们在“性能监视器”中检查了性能,没有发现任何瓶颈,所有使用率始终低于 10%(CPU、内存、硬盘、网络)
- 我们没有网络瓶颈,我们的服务器有 1gpbs 的互联网接入速度,我们通常只使用 2 或 3 mbps。我知道 1gpbs 是网卡速度,也是我们服务器的互联网接入速度。
- 量化性能差异并不容易,但在机器 1 上,我们的用户可以在不到 100 毫秒的时间内登录,而在机器 2 上,同样的登录大约需要 2 秒。登录不是唯一变慢的事情,整个连接会话都变慢了
谢谢@theunpaidBill,我们将尝试更好地捕获数据包以了解发生了什么!
另一项编辑:我知道这已经结束了,但我还是要添加这最后一条信息!我们将 Windows 2012 服务器降级到 Windows 2008 R2,我们的服务器性能得到了提升。我仍然不知道为什么,但这就是发生的事情。
答案1
第一步是找出瓶颈所在:网络、磁盘、CPU。
我首先怀疑的是网络。请确认您的服务器是否以正确的速度连接到网络。
如果是,我会在服务器上安装一个协议分析器并运行数据包捕获。根据我的经验,自定义协议通常会导致问题。
数据包捕获将告诉您网络流量是否由于重新传输、多余的握手等而导致延迟。
如果不是网络问题,我会与开发人员联系,以调试模式运行它。
隔离这样的性能问题非常具有挑战性,祝你好运。