今天在測試工程時發現一個action執行了2遍 ,這個操作大致需要5分多鐘才能完成,工程環境 apache2+tomcat6.0。
網上搜索發現了幾個可以設置超時的地方:
1.ajax 語法去設置單位毫秒,例如:
$.ajax({ url: XXX, timeout: 600000, type: 'POST', data: { }, error: function() { show_fail_meg("啟動系統失敗 !"); } });
2.tomcat配置 server.xml 單位毫秒
Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
3.apache的配置文件 httpd.conf,單位秒
# # Timeout: The number of seconds before receives and sends time out. # Timeout 60
修改以上幾個地方,發現還是沒有生效,最終定位在了mod_jk模塊,
mod_jk 簡稱JK,是Apache服務器的一個可插入模塊,用以為Apache或IIS服務器提供處理JSP/Servlet的能力。
也就是說JK的設置可能覆蓋了apache2和tomcat以及ajax的設置。
JK的配置文件/etc/httpd/conf/workers.properties內容如下:
worker.master.socket_timeout=300
果然看到這個數字正好是5分鐘,跟異常現象相一致,改大之後重啟,正常!