解決 Linux 大量 TIME_WAIT TCP 連線

HTTP 伺服器在高負載時反應會變慢, 但檢視系統的使用資源, 例如 CPU, 記憶體及 Load Average 則很正常, 當重新啟動 HTTP 伺服器後, 問題又暫時得以解決。用以下 netstat 檢查連線的統計資料: # netstat -nat | awk ‘{print $6}’ | sort | uniq -c | sort -n會發現 …

MySQL / MariaDB 設定 wait_timeout 限制 sleep 連線

當一些 PHP 開啟 MySQL 連線後, 沒有成功關閉 MySQL 連線, 會有一大堆 sleep 的 process, 在 MySQL 可以執行以下指令查看: mysql> SHOW PROCESSLIST;執行上面的 MySQL 指令會出現很多 Sleep 的連線, 當這些 Sleep 的連線過多時, 很容易會觸及 max_connections 的限制, 出現 too …


Shell Script 檢查輸入的參數數量

有時在 Shell Script 需要檢查輸入的參數數量, 在 Shell Script 要檢查輸入的參數數量, 可以直接用 $# 變數取得, 例如建立以下 Shell Script: 將以上內容儲存成 test.sh 後, 並給予可執行權限, 可以嘗試執行以下指令: $ test.sh 1 2 3 3上面在執行 test.sh 時, 輸入了 3 …

強制瀏覽器每次重新載入 CSS, JS 檔

當網站的 CSS 及 Javascript (.css 及 .js) 作出修改後,這些更新可能不會立即呈現及訪客,這是因為瀏覽器為了提高開啟網站的速度,會將 .js 及 .css 檔儲存在快取內,下次進入網站時不會重新載入所致。網站訪客可以清除網站的快取然後重新載入,便會看到新內容。但網站管理員總不能要求每個訪客這樣做,需要在網頁的層面解決。一個簡單的解法是在 HTML 的 Meta Tag 加入控制快取的指示,例如: 但這個方法很多時都不會長時間有效。另一個較簡單實用的方法是在檔名後面加上一個 GET 變數,這個 GET 變數可以是日期時間,也可以是版本號,例如: 當下次修改 CSS 或 JS 後,在網站的 HTML …


Linux 開啟檔名有空格的檔案

在 Linux 下一般不會用空格 (Space) 作為檔案名稱, 會用 底線 (_) 或橫線 (-) 分隔字串, 但如果檔案是從 Windows 複製進來, 或者是掛載 Windows 的分割區, 可能會有空格作為檔案名稱的一部分。如果有一個檔案名為 “file name.txt”, 在 Linux 要開啟有以下兩種方法, 分別是用引號包著檔案名稱, 以反在空格前加入 “\” 字符: $ cat ‘file …

CentOS 7 Apache (httpd) 重啟慢問題

在一台安裝了 Apache (httpd) 的 CentOS 主機上, 如果重新啟動 Apache 會很慢, 正常情況應該幾秒內便重啟完成.但啟動 Apache 便很快, 只是停止及重啟很慢。根據 Redhat Bugzilla 的內容, 在 systemd 的 httpd 服務, 將 KillMode 設定成 none 便可以, 以下是解決步驟:開啟 /usr/lib/systemd/system/httpd.service: /linux/ # …

Let’s Encrypt 申請 Wildcard SSL 憑證

Let’s Encrypt 在上年已經推出全網域通用憑證 (Wildcard Certificate), 也就是一張憑證可以讓網域下所有子網域通用, 所有子網域也可以使用同一張憑證。原本的網域下每個子網域都會產生一個新的憑證, 但如果網址較多管理也較麻煩, 以下紀錄一下申請 Let’s Encrypt Wildcard 憑證的方法。網路上有很多申請 Let’s Encrypt 憑證的工具, 以下會使用 Certbot, 先執行以下指令安裝 Certbot: /linux/install-certbot # wget https://www.eff.org/certbot-auto # chmod +x ./certbot-auto # ./certbot-auto …

Linux 建立 SWAP 檔案空間

Swap 檔案跟 Swap 分割區差不多, 分別是 Swap 檔案是用檔案的方式建立, 不是使用獨立硬碟分割區。以下是在 Linux 下建立 Swap 檔案的方法。建立 swap 檔案是使用 block size 作為單位, 每 1 MB 有 1024, 所以建立 1GB 的 swap 檔案便要建立 1024 * 1024 …

3 種檢查遠端埠號是否開啟的方法

除了在 Linux 的主機外, 在其他類型的主機也經常需要檢查埠號是否有開啟埠號, 例如要測試主機的服務是否正常。以下是分別用 nc, nmap 及 telnet 測試埠號是否有開啟的方法。nc (netcat)nc 的意思是 netcat, nc 可以讀取經過 TCP 及 UDP 的網路連線資料, 是一套很實用的網路除錯工具。在 CentOS 用 yum 安裝 nc: /linux/install-nc # yum install nc …