Linux環境下Informix性能監控與調優指南
onstat -c:查看CPU使用情況及進程信息(如用戶進程、系統進程占比);onstat -m:顯示內存使用詳情(緩沖池命中率、LRU隊列狀態、共享內存分配);onstat -d:監控磁盤I/O統計(讀寫速率、I/O等待時間、各dbspace負載);onstat -s:分析SQL語句執行統計(執行次數、平均耗時、全表掃描次數);onstat -z:確認統計信息的起始時間,輔助判斷數據時效性。onmode -l查看當前模式(在線/離線/恢復),onmode -j強制日志切換,幫助監控日志寫入是否及時。dbstat:提供數據庫對象級統計(如dbstat -d查看表空間使用率,dbstat -t查看表碎片情況);smon:系統監控工具,啟動后實時顯示內存、進程等資源使用(如smonmon);prof:SQL性能分析工具,通過prof -o output_file query_name輸出查詢執行細節,識別慢查詢瓶頸。oninit)的資源消耗,判斷是否存在進程級瓶頸。vmstat 1 5:每秒采集1次,共5次,查看系統整體資源使用趨勢(如進程數、內存交換、CPU空閑率);iostat -x 1:監控磁盤I/O負載(如讀寫速率、I/O等待時間、設備利用率),判斷磁盤是否成為瓶頸;sar -u 1 3:查看CPU使用率的1分鐘平均值(共3次),支持長期性能分析。df -h:以人類可讀格式顯示磁盤空間使用量,避免因磁盤滿導致Informix無法正常運行;netstat -an:顯示所有網絡連接信息(如連接數、端口狀態),監控數據庫網絡性能。/var/log/informix目錄,主要包括online.log(在線日志,記錄數據庫操作、錯誤信息)、alert.log(告警日志,記錄嚴重事件,如磁盤空間不足)。tail -f online.log實時查看日志更新,grep "ERROR" online.log篩選錯誤信息,快速定位性能問題(如死鎖、磁盤空間不足、SQL語法錯誤)。/etc/sysctl.conf文件,優化以下參數:
vm.swappiness:設置為10-20(降低swap傾向,優先使用物理內存);fs.file-max:設置為65536以上(增加系統最大文件描述符數,滿足高并發連接需求);vm.dirty_ratio:設置為10-20(控制臟頁寫入磁盤的閾值,減少I/O等待);net.ipv4.tcp_fin_timeout:設置為30秒(縮短TCP連接超時時間,釋放閑置連接)。noatime、nodiratime),減少文件元數據操作。CLEANERS:設置為活躍磁盤數目(如10塊磁盤則設為10),負責將緩沖區修改刷新到磁盤,過小會導致checkpoint時間過長,過大則會增加系統負載;NUMCPUVPS:設置為物理CPU核心數-1(OLTP場景)或等于物理CPU核心數(OLAP場景),優化CPU資源分配(如4核CPU設為3);SHMVIRTSIZE:設置為物理內存的75%(OLAP場景)或50%(OLTP場景),滿足共享內存需求(如16GB內存設為12GB);LRU_MAX_DIRTY/LRU_MIN_DIRTY:設置為80/70(控制臟頁刷新時機,避免內存溢出);CKPTINTVL:設置為3600秒(每小時執行一次checkpoint,平衡數據一致性與性能)。logdbs放磁盤1、phydbs放磁盤2、tmpdbs放磁盤3),減少I/O沖突。CREATE INDEX idx_name ON table(col1, col2));避免在索引列上使用函數(如WHERE UPPER(name) = 'JOHN'),否則會導致索引失效。EXPLAIN命令分析查詢執行計劃(如EXPLAIN SELECT * FROM orders WHERE customer_id = 100),識別全表掃描、排序操作等低效環節;優化JOIN操作(如減少關聯表數量、使用索引列關聯);避免SELECT *,只返回必要列。UPDATE STATISTICS命令(如UPDATE STATISTICS HIGH FOR TABLE customers),更新表統計信息,幫助優化器生成最優執行計劃。READ COMMITTED設為默認級別,減少鎖持有時間);設置鎖等待超時(如LTXHWM設為50%,LTXEHWM設為60%),避免長時間鎖等待導致的性能下降。