mysql 沒法銜接成績的定位和修復進程分享。本站提示廣大學習愛好者:(mysql 沒法銜接成績的定位和修復進程分享)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql 沒法銜接成績的定位和修復進程分享正文
定位成果以下:
客戶情況:
windows server 2003 r2 standard edition sp2
mysql Ver 14.12 Distrib 5.0.18, for Win32 (ia32)
apache 2.2
瑞星
webshield客戶端1.08
成績已復現。可以優化,沒法肯定是webshield招致的。
搭建情況:
windows server 2003 r2 standard edition sp2
mysql 5.0.18 for win32
apache-2.2.21-win32-x86-no_ssl
php-5.2.17-win32-vc6-x86
瑞星23.00.50.25
搭建情況進程中碰到的幾個成績:
鄙人載apache與php時,請留意apache與php婚配成績。
a)PHP5.3有VC6與VC9版本,應選擇VC6版本。緣由以下:
i. VC6版本是應用Visual Studio 6編譯器編譯的,假如你的PHP是用Apache來架設的,那你就選擇VC6版本。
ii. VC9版本是應用Visual Studio 2008編譯器編譯的,假如你的PHP是用IIS來架設的,那你就選擇VC9版本。
b)PHP5.3的Thread Safe和Non Thread Safe版本。Apache no_ssl版應與php Thread Safe版搭配。若與Non Thread Safe搭配,apache啟動失足:“Apache is running a threaded MPM,but your PHP Modle is not compiled to be threadsafe. You need to recompile PHP.”
i. Thread Safe是線程平安,履行時會停止線程(Thread)平安檢討,以避免有新請求就啟動新線程的CGI履行方法而耗盡體系資本。ISAPI履行方法是以DLL靜態庫的情勢應用,可以在被用戶要求後履行,在處置完一個用戶要求後不會立時消逝,所以須要停止線程平安檢討,如許來進步法式的履行效力,所以假如是以ISAPI來履行PHP,建議選擇Thread Safe版本;
ii. Non Thread Safe長短線程平安,在履行時不停止線程(Thread)平安檢討。FastCGI履行方法是以單一線程來履行操作,所以不須要停止線程的平安檢討,除去線程平安檢討的防護反而可以進步履行效力,所以,假如是以FastCGI來履行PHP,建議選擇Non Thread Safe版本。
留意apache對網站及PHP的准確設置裝備擺設。特殊留意設置裝備擺設文件中LoadModule, PHPIniDir,DocumentRoot,ServerRoot,Directory,DirectoryIndex,AddType application/x-httpd-php等項的設置裝備擺設
裝置後 mysql 後(治理員賬號暗碼:admin/admin),在PHP代碼中應用admin銜接數據庫掉敗,cmd履行mysql –u root -p啟用root用root可正常銜接數據庫。
成績復現:
PHP最長履行時光限制。
a)php最長履行時光默許為30秒,跨越30秒後被中斷履行,與mysql的銜接也被斷開。
b)測驗考試增年夜此值,修正php目次下的php.ini設置裝備擺設文件,將max_execution_time = 30 改成max_execution_time = 300。假如設為0,表現不限制PHP最年夜履行時光。
c)防止了因最長履行時光限制而招致mysql銜接掉敗。
網站流量年夜招致mysql沒法銜接。
a)編寫php劇本對mysql停止測試,發明當對mysql停止頻仍的銜接/斷開操作時,mysql很快湧現沒法銜接成績(毛病代碼:10048)。傍邊止一切銜接,2分鐘後mysql又恢復正常。若一直止銜接,mysql一向沒法銜接。
b)測驗考試從兩方面優化:
i. 修正windows注冊表項TcpTimedWaitDelay值為30(默許為240秒),削減此條目標值許可 TCP/IP 更快地釋放已封閉的銜接, 為新銜接供給更多資本。
ii. 修正windows注冊表項MaxUserPort為53768 (該值表現從體系要求任何可用用戶端口時所用最年夜端口數,TCP/IP 可指定的最高端標語,默許值為5000)以處置更多的要求。
c)修正完注冊表項後測試,mysql情形年夜有改良:mysql銜接毛病湧現的情形年夜有削減,失足後自我恢復的才能年夜有進步。
針對以上兩種情形,分離對裝置了webshield 1.08與未裝置webshield 1.08停止了測試,二者測試成果一樣。
優化:
max_execution_time的修正:
翻開php目次下的php.ini文件,找到max_execution_time = 30 這行,將30修正為想要的數字。
TcpTimedWaitDelay與MaxUserPort的修正:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e
"MaxUserPort"=dword:00008000