檢視 抵擋爬蟲 的原始碼
←
抵擋爬蟲
跳至導覽
跳至搜尋
由於下列原因,您沒有權限進行編輯此頁面的動作:
您請求的操作只有這個群組的使用者能使用:
使用者
您可以檢視並複製此頁面的原始碼。
[[分類:網路服務]] [[Cloudflare]]頁中有「抵擋爬蟲」的段落 ===DS720+ 檢測=== <ol> <li>監看目前所有程式的執行狀況:top <ul> <li><code>PID</code>: 執行任務的 Process ID</li> <li><code>USER</code>: 執行任務的使用者是誰</li> <li><code>PR</code>: 任務的優先度 (Priority)</li> <li><code>NI</code>: 任務的 Nice Value,負的值代表優先度高,正的值代表優先度低</li> <li><code>VIRT</code>: 總共用到多少 kB 虛擬記憶體 (Virtual Memory)</li> <li><code>RES</code>: 實體記憶體 (Resident Size) 大小 kB</li> <li><code>SHR</code>: 總共用到多少 kB 的共享記憶體 (Shared Memory)</li> <li><code>S</code>: 狀態 (Status) <ul> <li>R 代表執行中</li> <li>D 代表不可中斷睡眠 (不可被 signal 打斷通常在等 I/O)</li> <li>S 代表睡眠 (可被喚醒)</li> <li>T 中斷中或停止,可能是被 <code>SIGSTOP</code> 或 <code>SIGTSTP</code> 停止,或是被 degubber 中斷 (ptrace)</li> <li>Z 代表殭屍,通常發生在 Child 已經執行完,等待 Parent 結束或回收</li> </ul> </li> <li><code>%CPU</code>: 占用到多少 CPU %,注意到一個核心是 100%,所以多核心是可以超過 100% 的</li> <li><code>%MEM</code>: 占用到多少全部記憶體多少比例</li> <li><code>TIME+</code>: 已經執行多少時間</li> <li><code>COMMAND</code>: 任務的指令名稱</li> </ul> </li> </ol> # # netstat -antp | grep :80 # 查訪問的 IP 來源 netstat -tn | grep ESTABLISHED | \ awk '{print $5}' | cut -d: -f1 | \ sort | uniq -c | sort -nr | head -20 # 封阿里雲常見的掃描來源網段:<br/>在「DSM / 控制台 / 安全性 / 防火牆 / 防火牆設定檔 / 編輯規則 / 新增」:<br/>「所有連接埠 | 拒絕 | 特定 IP => IP 範圍:從 47.82.0.0 到 47.82.255.255」 #:47.79.0.0/16 #:47.82.0.0/16 #:47.88.0.0/16 <table class='nicetable'> <tr><th>狀態</th><th>封鎖前</th><th>封鎖後</th></tr> <tr><td>ESTABLISHED</td><td>1115</td><td>27</td></tr> <tr><td>CLOSE_WAIT</td><td>308</td><td>0</td></tr> <tr><td>FIN_WAIT2</td><td>297</td><td>0</td></tr> <tr><td>SYN_SENT</td><td>92</td><td>0</td></tr> <tr><td>CPU</td><td>50~85%</td><td>你之前觀察已明顯下降</td></tr> <tr><td>寫入量</td><td>很高</td><td>幾乎歸零</td></tr> </table> # <span>HTTP</span><br><span> ↓</span><br><span>Apache</span><br><span> ↓</span><br><span>PHP</span><br><span> ↓</span><br><span>MediaWiki</span><br><span> ↓</span><br><span>MariaDB</span> # TCP 的正常流程:<span>ESTABLISHED</span><br><span> ↓</span><br><span>FIN_WAIT</span><br><span> ↓</span><br><span>TIME_WAIT</span><br><span> ↓</span><br><span>消失</span> # http_response_code(503); 能瞬間降低負載。 # sudo iostat -xm 1 # netstat -ant | awk '{print $6}' | sort | uniq -c 回應 1 established) 23 ESTABLISHED 2 FIN_WAIT1 2 FIN_WAIT2 1 Foreign 2 LAST_ACK 32 LISTEN 3 SYN_RECV 961 TIME_WAIT 或 1 established) 41 ESTABLISHED 1 Foreign 32 LISTEN 985 TIME_WAIT # 列出 cpu 佔用的前 20 名:「ps aux --sort=-%cpu | head -20」<br/>發現主要是 mariadbd 和數個 php-fpm worker => 11MB/s 寫入量來自「MediaWiki → PHP → MariaDB」鏈條 ====檢查儲存裝置被頻繁寫入==== 發現儲存裝置有 11MB/s 寫入量 # 查資料庫請求的增量:「SHOW GLOBAL STATUS LIKE 'Questions';」 60 秒後 再執行一次,看增加多少 => 60 秒增加:76491 => 約 1,275 queries / 秒 # 查是哪些請求:「SHOW FULL PROCESSLIST;」秀出運行中的全部請求<br/>如果太多,先用這個:<br/>---------- information_schema 資料庫中的 PROCESSLIST 資料表 ---------- #*SELECT ID,USER,DB,COMMAND,TIME,STATE,LEFT(INFO,300) AS SQL_TEXT FROM INFORMATION_SCHEMA.PROCESSLIST WHERE COMMAND<>'Sleep' ORDER BY TIME DESC;<br/>也查資料庫連線來源: #*SELECT USER,DB,COMMAND,COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST GROUP BY USER,DB,COMMAND ORDER BY COUNT(*) DESC; #*查到:<br/>REPLACE /* SqlBagOStuff::updateTable */ INTO `wiki_objectcache` (keyname,value,exptime) VALUES ('alWiki:messages:zh-tw','………','20380119031407') #:11MB/s 寫入的原因很明確:objectcache 一直被 REPLACE<br/>---------- 查快取是否使用 wiki_objectcache ---------- # SELECT COUNT(*) FROM wiki_objectcache; 等一分鐘再查一次,如果數量持續增加,是使用 wiki_objectcache # 看 SHOW TABLE STATUS LIKE 'wiki_objectcache'; 中的: #* Data_length #* Index_length #* Update_time # 清快取表:「TRUNCATE TABLE wiki_objectcache;」 # sudo synopkg restart MariaDB10 重啟資料庫服務 # sudo synopkg restart WebStation 重啟網頁服務 # sudo synosystemctl restart pkgctl-WebStation 只重啟 PHP-FPM
返回「
抵擋爬蟲
」頁面
導覽選單
個人工具
登入
命名空間
頁面
討論
變體
視圖
閱讀
檢視原始碼
檢視歷史
更多
搜尋
導覽
首頁
近期變更
隨機頁面
有關 MediaWiki 的說明
工具
連結至此的頁面
相關變更
特殊頁面
頁面資訊