日期:2014-05-16 浏览次数:21148 次
上次做的项目,使用的是apache做为前台服务器,接收浏览器发送过来的请求,通过jk连接转发给后台的tomcat处理。
一直不明白布署的那位仁兄为什么要这么做。我曾经问过这位仁兄,其说看过一些文章,说tomcat对于静态页面的处理效率不高,而apache的处理效率比较高,所以就这么做。而jk连接器的配置就是从网上抄了一个过来。
原来服务器一直相安无事,这个系统是给国内的一个比较有名的投资公司做的。前几天,对方突然要求我们开发一个相册的功能,来处理集体活动的照片。
于是按照要求写了一个。布署上去后,前一天倒还无事,原来设计中是一页只显示了12张照片的缩略图。后来对方要求多加一点,于是改到了48,结果问题来了,经常是莫名其妙的,服务器就处理不了请求了,查看了一个程序,确认不是程序的问题。
最让人觉得费解的是居然没有发现服务器有Crash的日志,也就是说服务器本身并没有crash掉。于是不解。郁闷了半天,查找了服务器上是否有病毒,(前一次就是有病毒,导致服务器效率奇低,痛恨使用Windows来布署服务器),没有发现系统进程中有可疑的进程。
于是打电话与那位仁兄交流,那位仁兄的意见还是将静态的东西交由Apache来处理,说可以将相册的图片的显示交由静态服务器来做。
在详细询问了jk的配置的时候,突然发现了对于tomcat的最大连接数配置的是150,也就是说tomcat同时能够处理150个请求,而jk的连接数也只有150,也就是说jk也只可以转发150个讨还到tomcat,这一点倒是吻合。前台的apache的倒是可以处理挺多的请求的。于是细问了这个仁兄一句, 为何这样配置?仁兄的答案是都是这样配置的。
于是细一想,不对啊,我现在如果请求一个相册中的照片,即打开一个相册,我至少就会提交了1+48=49个请求,如果再同时多点击几次,不是一下就到达了150吗?难怪会出现不响应的现象。一想,应当是apache接收了请求后,想通过jk交由tomcat可是后二者的连接数都已经满了,不处理完之前无法处理,所以就造成了这种现象出现了。
于是马上加班改,将图片交由前台的apache直接管理,幸好是图片没有权限的控制,是大家都能看的。不会出现权限的问题。
最后得出一个结论,在配置这些之前,一定要搞清楚原理啊。盲目的抄了网上的东西,或者是照本宣科,套用一句俗气的电影台词:“出来混,早晚都要还的!”