2012年3月30日 星期五

fuser defunct 為PHP5 BUG 耗損CPU 而產生殭屍程序的解決方式

這問題產生在 Ubuntu server 11.10 請修正編輯 /etc/cron.d/php5 更換程式碼如下:

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -deleteNow everything works fine! :)


2012年3月29日 星期四

2012年3月26日 星期一

Windows XP 遠端桌面-多人遠端登入

緣由 : XP Pro 的遠端桌面只允許一個人連線,當其他使用者使用遠端桌面連線到 XP Pro 時,本機使用者會被強制登出。只要完成下列步驟,就可以解除這個限制,經實測確實可行 (測試機器為 XP Pro SP2 Vol 版本,本機主控台一個工作階段加上兩部電腦遠端登入)。

1. 將 Windows 啟動在安全模式。
2. 按一下 [控制台] 中的 [系統],取消選取 [遠端] 索引標籤中的
[允許使用者遠端連線 到這部電腦],然後按一下 [確定]。
3. 開啟 [控制台][系統管理工具][服務],將 Terminal Services 服務停用,
然後按一下[確定]。
4. 瀏覽到 C:\windows\system32\dllcache 目錄,將termsrv.dll 檔案改成
別的名稱 (例如 termsrv.original)。
5. 從 http://www.orbitfiles.com/download/id20947665 下載無連線數目限制
的 termsrv.dll,然後將它複製到C:\windows\system32\dllcache 目錄。
6. 瀏覽到 C:\windows\system32 目錄,重複步驟 4 與步驟 5
(將 termserv.dll 改成其他名稱,然後將剛下載的檔案複製到此目錄。
7. 開啟 [登錄編輯程式],找到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
Terminal Server\Licensing Core 機碼。新增一個名為
EnableConcurrentSessions 的 DWORD 項目,將其值設定為 1,
然後關閉 [登錄編輯程式]。
8. 按一下 [ 開始][執行],輸入 gpedit.msc,然後按一下ENTER。
開啟 [電腦設定][系統管理範本][Windows 元件][終端機服務],
按兩下 [限制連線數目],選擇 [已啟用],然後在
[可允許的 TS 最大連線數目] 中設定想要的最大連線數目。
9. 重新啟動 Windows 在正常模式。
10. 按一下 [控制台] 中的 [系統],選取 [遠端] 索引標籤中的
[允許使用者允端連線到這部電腦],然後按一下 [確定]。
11. 開啟 [控制台][系統管理工具][服務],將 Terminal Services 服務啟動,
然後按一下 [確定]。
12. 重新啟動 Windows。

注意:

1. 您必須為使用者建立帳戶並將他加入 Remote Desktop User群組,
該使用者才能連線。
2. 您可能必須啟用「快速使用者切換」與「歡迎畫面」,按一
下 [開始][控制台][使用者帳戶][變更使用者登入或登出的方式]
以啟用上述兩個功能。
3. 此解決方案可能不適合已加入網域的電腦,因為網域群組原則可能
會覆寫本機群組原則。


資料來源:http://bubble727.pixnet.net/blog/post/4650800-%5Bwindows%5D%E9%81%A0%E7%AB%AF%E6%A1%8C%E9%9D%A2-%E5%A4%9A%E4%BA%BA%E9%81%A0%E7%AB%AF%E7%99%BB%E5%85%A5--windows-xp

2012年3月18日 星期日

2012年3月15日 星期四

舊款10/100MB集線器Switch與周邊GIGA設備傳輸不穩

最近客戶的D-LINK 舊款10/100MB Switch 連接GIGA設備,只要傳大量資料,整台就會掛掉,所以建議有相關問題的人,可以試著更新韌體或更換新款設備。

2012年3月11日 星期日

使用SCP 免密碼

假設想讓 B 主機上面免輸入密碼就能利用 ssh 登入 A 主機.
第一: 在 B 主機上使用以下指令產生 RSA key pair :
# ssh-keygen -t rsa

執行後相關訊息如下:
Enter file in which to save the key (~/.ssh/id_rsa):Enter
Enter passphrase (empty for no passphrase):Enter
Enter same passphrase again:Enter

public key 會放在 ~/.ssh/id_rsa.pub

(PS) :注意內容內的帳號名稱! 預設值大多產生root這帳號,因此做SCP的動作請改成所產生的內容帳號!

將B主機/.ssh/id_rsa.pub的內容,放進 A 主機的 ~/.ssh/authorized_keys的內容內。
設定即可完成,並且可以連線SCP動作而不需要KEY密碼.

2012年3月4日 星期日

調整Apache佔用CPU高使用率的問題

無法查看此摘要。請 按這裡查看文章。

對 Apache 連線數多 概念解析


今天說說Apache的最佳化。為什麼要最佳化?因為伺服器資源不夠用。資源有很多方麵,但根據木桶理論,只要有一種資源不夠用,整個伺服器的效能就會受到影響(所謂瓶頸)。
伺服器資源
那麼伺服器的資源包括哪些?對於網站來說主要是CPUTCP連線數這兩者。 CPU表現在工作數上,在Linux下使用平均負載(loadavg)來衡量。可透過以下指令來檢視(參考這篇文章):
cat /proc/loadavg
對於單CPU的伺服器,loadavg高於1,表明工作隊列出現了等待,CPU忙不過來了。超過2以上就會明顯感到效能降低了。
TCP連線數可透過以下指令檢視:
netstat -ant | grep :80 | wc -l
如果要即時監控伺服器資源,可參考OpenNMS項目。
注1:記憶體不算,低廉的價格使得網站伺服器很少有因為記憶體不夠而down掉的。
注2:CPU%是瞬時的CPU使用率,通常無法反映出整體負載。
Apache配置指令
Apache在資源方麵的配置指令主要有以下幾條。
KeepAlive是否允許持續連線
MaxKeepAliveRequests允許的持續連線的最大數
KeepAliveTimeout持續連線在沒有請求多少秒後切斷
StartServers最初啓動時啓動多少個伺服器處理序
MinSpareServers空閒伺服器處理序的最小數
MaxSpareServers空閒伺服器處理序的最大數
MaxRequestsPerChild每個子處理序處理的最大請求數
KeepAlive
前三個KeepAlive相關的指令用來設定持續連線。通常都是每個HTTP請求對應一個TCP連線,但對於一個包含許多圖片的網頁來說,用戶端會在瞬間發出多個HTTP請求,此時多次建立TCP連線會大大降低回應速度。此時透過持續連線,可以允許使用者在一個TCP連線中發出多個HTTP請求,減少TCP 連線建立次數,提高回應速度。
這種情況下,應當透過access_log統計出連續HTTP請求出現的次數、間隔時間、訪問量,以確定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小發揮不了持續連線的作用;太大了,持續連線遲遲不斷,浪費TCP連線數不說,更糟糕的是係統中的 httpd 處理序數目會因此不斷增加,使得係統負載升高,甚至會導緻伺服器失去回應。
但是在處理動態網頁請求時,由於使用者很少會瞬間請求多個動態網頁(一般都是開啟页面之後閱讀好半天才點下一頁),此時開啟KeepAlive無異於浪費TCP連線數。
結論就是,放動態網頁的就 KeepAlive Off 以提高吞吐量,放靜態內容如圖片、js程式碼等就 KeepAlive On 以減少TCP連線建立次數。
但一個Apache隻能有一種 KeepAlive 設定,怎麼辦?很簡單,弄兩臺伺服器,一個專門放指令檔,一個專門放圖片。
伺服器處理序數
再說說下麵的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改,因為Apache會自動調節子處理序數。 MinSpareServers和MaxSpareServers是空閒子處理序數目,何為空閒子處理序?假設某一時刻係統中共有30個httpd處理序,其中一個是父處理序,20個在處理請求,那麼空閒子處理序數就是9個。
空閒處理序少了,大量的突發請求會使伺服器疲於處理序建立,降低效率;而太多反而會增加係統處理序數,增大係統負載。
實際上,預設值已足夠處理一般的突發請求,所以除非是流量特別特別巨大的網站,否則不要修改這些設定。
就算流量特別特別大,也是透過負載平衡係統來降低每臺伺服器的訪問量,不會修改這幾個值。
MaxRequestsPerChild
這個值設定子處理序在處理多少個請求之後自動結束。這個選項是用來防止處理序由於記憶體泄漏等使用記憶體過多。一般預設值即可。
總結
說來說去其實最重要的還是 KeepAlive 的設定,而效能調節也就是調整 KeepAlive、KeepAliveTimeout 值。


更多内容 http://ssorc.tw/rewrite.php/read-907.html#ixzz1o6R3hEgX

Apache調教

打開apache2.2的錯誤日誌:
[Thu Feb 16 15:37:18 2012] [error] (OS 10038)在一個非套接字上嘗試了一個操作。  : Child 5316: Encountered too many errors accepting client connections. Possible causes: dynamic address renewal, or incompatible VPN or firewall software. Try using the Win32DisableAcceptEx directive.
這個錯誤是CPU佔用率一直是100%
然後上網查了解決辦法:
httpd.conf文件中加入代碼:
<IfModule mpm_winnt.c>
ThreadsPerChild 1000
MaxRequestsPerChild 10000
Win32DisableAcceptEx
</IfModule>
重啟apache,發現
Cpu佔用率降下來了。
原因:apache2.0.49以上的accepteExwindows下出現這個問題。
[Thu Feb 16 16:49:10 2012] [error] (OS 10038)在一個非套接字上嘗試了一個操作。  : Too many errors in select loop. Child process exiting.
[Thu Feb 16 16:49:10 2012] [notice] Child 4216: Exit event signaled. Child process is ending. 
然後在dos運行命令netsh winsock reset再重啟apache
在瀏覽器裡面輸入localhost終於行了