此文章主要向大家描述的是DB2數據庫代理與連接常見問題分析和優化,假如你在實際操作中遇到DB2數據庫代理與連接常見問題分析和優,但你卻不知道對其如何正確的解決,那麼以下的文章對你而言一定是良師益友。
連接超限問題
在 DB2 V8,V9.1 中所設置的 MAX_CONNECTIONS 或 MAXAGENTS 值比較小時,如果出現了外部連接數過多就會出現錯誤。錯誤如清單 1 所示。
清單 1. db2diag.log 診斷日志
- 2008-01-15-14.30.13.090289-360 I12983210A1195 LEVEL: Info
- PID : 762076 TID : 772 PROC : db2acd
- INSTANCE: db2inst1 NODE : 000
- APPID : *LOCAL.db2inst1.080115203015
- EDUID : 772 EDUNAME: db2acd
- FUNCTION: DB2 UDB, DRDA Communication Manager, sqljcReceive, probe:30
- MESSAGE : ZRC=0x8136001C=-2127167460=SQLZ_RC_NO_CONNECTION, SQLT_SQLJC
- "No connection"
- DATA #1 : String, 11 bytes
- CCI Error:
- DATA #2 : unsigned integer, 8 bytes
- ...
這時可以通過下面命令來查看當前的連接數:
清單 2. 查看當前的連接數
- $ db2 list applications
- Auth Id Application Appl. Application Id
- DB # of
- Name Handle
- Name Agents
- DB2INST1 db2taskd 583 *LOCAL.db2inst1.080112150958
- SVT_DB 1
- DB2INST1 db2stmm 582 *LOCAL.db2inst1.080112150957
- SVT_DB 1
- DB2INST1 Java 592 *LOCAL.db2inst1.080115201505
- SVT_DB 1
- DB2INST1 java 572 *LOCAL.db2inst1.080115201445
- SVT_DB 1
- DB2INST1 java 585 *LOCAL.db2inst1.080115201458
- SVT_DB 1
- DB2INST1 java 565 *LOCAL.db2inst1.080115201437
- SVT_DB 1
- DB2INST1 java 584 *LOCAL.db2inst1.080115201457
- SVT_DB 1
- DB2INST1 java 590 *LOCAL.db2inst1.080115201503
- SVT_DB 1
- DB2INST1 db2bp 591 *LOCAL.db2inst1.080115201502
- ...
可以查看這時的連接數與 MAX_CONNECTIONS 的值的比較,從而做出調整。這時應當注意,在 v9.1 或 v9.5 環境下,有兩個服務器內部的特殊應用 db2stmm 和 db2taskd 不應算作外部連接。db2stmm 是用來管理內存自動調節特性的DB2數據庫代理,db2taskd 是用來分配數據庫後台任務的代理。
示例中的 java 代表外部連接來自 JAVA 應用程序。db2bp 代表來自 CLP(DB2 命令窗口 ) 的一個連接。可以看到這些連接都連到了數據庫 SVT_DB 上。