2010-07-05 58 views
3

我有ZendFramework的應用程序正在使用XMLRPC通信到其他ZendFramework應用程序。兩者都在同一臺服務器上(用於開發)。這種溝通非常緩慢,我試圖找出原因。分析後,我發現ZF Lib XMLRPC閱讀器的fgets()內部存在放緩現象。爲什麼apache每次都會recv() - 15秒?

雖然strand-基於ZendFramework的PHP應用程序,我得到一些模式與recv() 等待15秒?任何人都知道爲什麼這可能會發生?

0.000038 gettimeofday({1278333900, 86101}, NULL) = 0 
0.000037 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 32 
0.000035 fcntl64(32, F_GETFL)  = 0x2 (flags O_RDWR) 
0.000033 fcntl64(32, F_SETFL, O_RDWR|O_NONBLOCK) = 0 
0.000034 connect(32, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("127.0.0.1")}, 16) = -1 EINPROGRESS (Operation now in progress) 
0.000076 poll([{fd=32, events=POLLIN|POLLOUT|POLLERR|POLLHUP}], 1, 120000) = 1 ([{fd=32, revents=POLLOUT}]) 
0.000045 getsockopt(32, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 
0.000036 fcntl64(32, F_SETFL, O_RDWR) = 0 
0.000113 send(32, "POST /r/?articleId=554&hpr=Pimpl"..., 1180, MSG_DONTWAIT) = 1180 
0.000148 poll([{fd=32, events=POLLIN|POLLERR|POLLHUP}], 1, 120000) = 1 ([{fd=32, revents=POLLIN}]) 
0.028020 recv(32, "HTTP/1.1 200 OK\r\nDate: Mon, 05 J"..., 8192, MSG_DONTWAIT) = 543 
0.000105 poll([{fd=32, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout) 
0.000050 poll([{fd=32, events=POLLIN|POLLERR|POLLHUP}], 1, 120000) = 1 ([{fd=32, revents=POLLIN}]) 
15.012976 recv(32, "", 8192, MSG_DONTWAIT) = 0 
0.00close(32)     = 0 
+0

我注意到在配置中我將KeepAlive設置爲15秒。也許這可能是因爲這應該是非阻塞recv()(MSG_DONTWAIT)? – f13o 2010-07-06 08:43:12

+1

絕對是這樣。我假設你正在手動測試POSTs?如果是這樣,請嘗試添加「連接:關閉」您的請求標題。 – 2010-07-13 17:56:30

回答

1

我對ZendFramework知之甚少,所以請點評一下鹽吧......但是!

如果我理解這個正確

0.000050 poll([{fd=32, events=POLLIN|POLLERR|POLLHUP}], 1, 120000) = 1 ([{fd=32, revents=POLLIN}]) 
15.012976 recv(32, "", 8192, MSG_DONTWAIT) = 0 

這意味着你是插座(32)上查詢你得到一個信號POLLIN(輸入數據),你去的recv並等待15秒(超時)獲得0字節返回

這對我來說會顯示一個錯誤。可能在zendframework中,或者你是怎麼稱呼它的。在recv之後接收0個字節指示套接字完全關閉(而不是強制關閉)。因此,當你輪到輪詢並進入recv時,響應應該立即(其唯一讀取0字節)

MSG_DONTWAIT標誌我假設進入非阻塞模式的手段,這意味着無論數據在等待它應立即返回,無論是數據還是帶有blockblock錯誤,都會返回到輪詢循環。

它可能是其他東西凍結導致此鎖定的線程。嘗試將應用程序放置在兩臺不同的機器上,以查看是否出現相同的錯誤。它可能是一些奇怪的互動。

DC

相關問題