我们运行 3 台 Windows 2019 服务器的负载平衡。其中一台是“主”服务器,为其他节点提供 SMB 共享,它也是运行 Redis 的服务器(Redis 用于会话和缓存)。但这个主服务器也是一个 HTTP 节点。
我们的问题是,在主服务器上,我们的网站运行速度比在其他节点上快得多,差异是 1 秒,非常大。
事实上,其他(非主)节点有更快的 CPU,并且在 PHP 基准测试中它们的表现更好:
主服务器(Redis、SMB、IIS):
PHP version : 7.4.16
Platform : WINNT
--------------------------------------
test_math : 0.396 sec.
test_stringmanipulation : 2.818 sec.
test_loops : 0.304 sec.
test_ifelse : 0.374 sec.
--------------------------------------
Total time: : 3.892 sec.
其他节点:
PHP version : 7.4.16
Platform : WINNT
--------------------------------------
test_math : 0.311 sec.
test_stringmanipulation : 2.334 sec.
test_loops : 0.234 sec.
test_ifelse : 0.191 sec.
--------------------------------------
Total time: : 3.07 sec.
所以这肯定不是 CPU 问题,因为主节点速度较慢。所以这要么是网络、SMB 或 Redis 问题。
我倾向于使用 Redis,因为我们对节点使用 Wincache 和 Opcache,所以基本上所有 .php 文件都在每个节点本地缓存(SMB 仅用于每隔几分钟重新验证)。
然而我不知道如何确切地找出瓶颈在哪里,以及如何解决它。
有人可以帮忙吗?
谢谢亚历克斯
答案1
我其实完全搞错了,是 SMB 共享造成了问题。我通过将文件复制到从属节点来验证这一点,其性能与主服务器相同,甚至略好(因为 CPU 更快)。
所以这确实是 SMB 问题。SMB 可能仍在来回发送数据。
SMB 共享位于非常快的 SSD 存储上,我怀疑这仅仅是因为 SMB 不够快,或者存在配置问题。
如果有人对这种情况有关于 SMB 的任何建议,请告诉我们 :)
谢谢亚历克斯