如何在KVM VM中的java和php进程之间的进程间通信中摆脱tcp-ip发送延迟

问题描述 投票:0回答:1

我有一个由java部分和php部分组成的Web应用程序。当用户执行请求时,php进程将打开与java进程的tcp / ip连接。它将在请求期间保持此连接打开,此连接将用于来回发送大量信息。只要托管在专用服务器或使用OpenVZ的VM上,此应用程序就可以很好地运行。

一旦我尝试在KVM VM上托管它,它就变得非常慢。这样做的原因是,在单个用户请求中,php进程可以轻松地将最多1或2千个tcp-ip发送到java进程。现在,因为这一切都是在同一个连接上完成的。它确实不应该是一个问题,但在KVM VM上似乎每个发送的延迟大约为20毫秒,所以现在通常需要0.1秒的请求需要20秒。

我不是100%肯定KVM应该受到责备,但我已经在使用OpenVZ的3个不同主机提供商和使用KVM的另外3个不同主机提供商上测试了这个。它在所有OpenVZ主机上都运行得很好,并且所有KVM主机上都存在发送延迟问题。

我和我在java和php端都设置了tcpnodelay。

知道我可以尝试在KVM上使用它吗?

java php linux tcp-ip kvm
1个回答
0
投票

所以回答我自己的问题。似乎你似乎无法避免发送延迟,因为即使它在localhost上它仍然必须从虚拟化层下载到网络层并备份。

但是,不是在localhost上创建TCP套接字,而是使用Unix套接字代替。由于Unix套接字不以任何方式访问网络层。

作为奖励使用Unix套接字而不是TCP套接字为我的应用程序提供了良好的全面性能提升。包括在设置上它之前工作得很好。

© www.soinside.com 2019 - 2024. All rights reserved.