How to scale Java EE applications vertically
如何垂直扩展Java EE应用程序
Many software designers and developers take the functionality as the most important factor in a product while
thinking of performance and scalability as add-on features and after-work actions. Most of them believe that
expensive hardware can close the gap of the performance issue.
许多软件设计者和开发者把功能看作是一件产品最重要的因素,同时考虑性能和可伸缩性作为工作后的附加功能。他
们大多认为,昂贵的硬件可以缩小性能的差距问题。
Sometimes they are wrong. Last month, there was an urgent project in our laboratory. After the product failed to
meet the performance requirement of their customer in a 4-CPU machine, the partner wanted to test their product in
a bigger (8-CPU) server. The result was that the performance was worse than in the 4-CPU server.
有时候,他们是错的。上个月,在我们的实验室有一个紧急项目。这种产品未能满足他们的客户在他们4 CPU的机器
的性能要求,合作伙伴希望在一个更大的(8个CPU)服务器上以测试他们的产品。其结果是,性能比在4 CPU服务
器上更差。
Why did this happen? Basically, if your system is a multiprocessed or multithreaded application, and is running out
of CPU resources, then your applications will most likely scale well when more CPUs added.
为什么会出现这种情况呢?基本上,如果你的系统是一个多进程或多线程应用程序,并且占用了全部CPU资源,那么
只有当你给它增加更多的cpu资源时,你的应用程序才更有可能得到垂直扩展。
Java technology-based applications embrace threading in a fundamental way. Not only does the Java language
facilitate multithreaded applications, but the JVM is a multi-threaded process that provides scheduling and memory
management for Java applications. Java applications that can benefit directly from multi-CPU resources include
application servers such as BEA's Weblogic, IBM's Websphere, or the open-source Glassfish and Tomcat
application server. All applications that use a Java EE application server can immediately benefit from CMT & SMP
technology.
基于Java技术的应用程序从根本上支持多线程。Java语言不仅方便多线程应用程序,而且JVM(java vitrical
machine--虚拟机)是一个多线程的进程,对Java应用程序的进行调度和内存管理。 Java应用程序可以直接受益于多
CPU资源,包括应用服务,如BEA的WebLogic,IBM的WebSphere,或开源的Glassfish和Tomcat应用程序服务
。使用Java EE应用服务的所有应用程序可以立即受益CMT&SMP技术。
But in my laboratory, I found a lot of products cannot make full usage of the CPU resources. Some of them can only
occupy no more than 20% CPU resources in an 8-CPU server. Such applications can benefit little when more CPU
resources added.