如何在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发送延迟的主要内容,如果未能解决你的问题,请参考以下文章

用java编写程序,利用线程同步编写一个栈操作程序,包括数据的进栈和出栈。

kvm虚拟化网络管理

kvm虚拟化网络管理

kvm虚拟化网络管理

kvm的vm如何迁移?

kvm的vm如何迁移?