如何在KVM VM中的java和php进程之间的进程间通信中摆脱tcp-ip发送延迟
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在KVM VM中的java和php进程之间的进程间通信中摆脱tcp-ip发送延迟相关的知识,希望对你有一定的参考价值。
我有一个由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上使用它吗?
所以回答我自己的问题。似乎你似乎无法避免发送延迟,因为即使它在localhost上它仍然必须从虚拟化层下载到网络层并备份。
但是,不是在localhost上创建TCP套接字,而是使用Unix套接字代替。由于Unix套接字不以任何方式访问网络层。
作为奖励使用Unix套接字而不是TCP套接字为我的应用程序提供了良好的全面性能提升。包括在设置上它之前工作得很好。
以上是关于如何在KVM VM中的java和php进程之间的进程间通信中摆脱tcp-ip发送延迟的主要内容,如果未能解决你的问题,请参考以下文章