Tomcat 日誌記錄了 Solr 查詢詳情,包含 QTime(查詢耗時毫秒)。需快速篩選超過閾值(如 800ms)的慢查詢進行優化。
182460138 [http-nio-8080-exec-13] INFO org.apache.solr.core.SolrCore - [collection1] webapp=/solr4 path=/select params={...} hits=36428 status=0 QTime=25
NOW=$(date +"%Y-%m-%d") LOGFILE="slow_query.$NOW.log" touch /var/log/tomcat6/$LOGFILE # 閾值 800ms,提取 QTime >= 800 的記錄 cat /var/log/tomcat6/catalina.out | grep 'QTime' | awk -F 'QTime=' 'int($NF) >= 800' > /var/log/tomcat6/$LOGFILE
grep 'QTime':過濾包含查詢時間的行awk -F 'QTime=':以 QTime= 為分隔符,取最後一欄($NF)為耗時值int($NF) >= 800:轉整數比較,滿足條件輸出整行該腳本可直接加入 crontab 定時執行,實現慢查詢自動巡檢。