请问多个虚拟机同时执行,相比多线程是否更具优势?
拿Tomcat来说,可以把一些不常用的会产生较长I/O阻塞的操作比如上传,通过Nginx分发到专门负责处理上传的监听另一个端口的Tomcat实例上,以免影响处理常用服务的Tomcat实例.PHP也一样,可以利用PHP-FPM提供的池的隔离性,分离计算密集和I/O密集操作,可以减少阻塞对整个PHP应用的影响.
绝大多数情况下,当然是多线程更有优势;理由太简单了,Sun/Oracle的JVM在内存管理并不共享,这意味着每个JVM都会有自己的新生代、年老带、持久带、栈空间等一系列重复的内存开销;更别提进程间通讯的复杂度和线程间通讯根本不是一个数量级;还不要算上序列化与反序列化的时间等等;
只有非常少数特殊的情况,多JVM的优势才能体现出来。比如使用cgroup进行JVM进程与CPU的绑定(多见于高并发或高吞吐网络通讯服务器场景)
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
你是要比较开6个线程在一个JVM中运行
和开6个虚拟机每一个虚拟机开一个线程运行这样比较么?
开一个食堂让6个人吃饭和开6个食堂,每个食堂让一个人吃饭的比较是一样的吧