续《 用户投诉:为什么你们的项目没有经过性能测试就准备在周五上线?!》,投诉回电后,马上电话协调部门经理的管理者,安排资源跟进死机的问题,为项目小组的周五上线做积极的准备。
回到公司,根据电话的安排,组织该部门SDU(我称为特别行动小组,港行称为飞虎队),开到用户的现场去了解和排查问题,其中有一个SDU的成员,原定正在进行公司的应届新员工的培训,被要求集合归队出发。在出发前,除了安排好培训工作外,还给正在培训的学员安排了周六一个加餐,要求他们在周六晚下班前,编写出让Tomcat挂起死机的代码!
原因很简单,只有知道了如何会让Tomcat、Weblogic、WAS等Web容器挂起,才能在后续的工作中,避免开发出“死机”隐患的项目代码。
当然有读者说,这不是很容易吗?搞一个死循环,不就是让机器死了吗?呵呵,如果你也这么想,第一,你没有搞过多核的程序;第二,我们肯定不是这样的要求,不是闹着玩,为死机而死机,傻瓜不会这么做。
我们的要求是当“死机”挂起发生的时候,CPU的使用率不能高于10%,内存的使用率不能高于30%。当然有学员不理解,觉得不可思议,我的回答是:
- 如果“死机”挂起的情况下,CPU的使用率都是很高,那么最开心的应该是Intel和AMD,他们多么容易发掘销售机会啊;
- 如果你觉得不可思议,那只能证明你对Web容器的运行原理不清楚,并且对多线程、数据库并发原理的理解不清楚,只会写Java的代码而没有抱怀疑的心态,是一个很危险的事情。
- 我对Java同事的要求不算高了,对YF的新员工,我要求他们用三种方法来实现。