websphere ejb壓力測試下,鎖socket的問題
應用部署在websphere7.0上。
開一個例項,一個ejb ,例項的記憶體為8g,ejb為5g左右,併發100以上就出現鎖socket的現象。
以上是利用kill -3 生成的javacore檔案。
列印的堆疊如下:(比較長哈~_~)
at com.ibm.rmi.util.buffer.SimpleByteBuffer.flushTo(SimpleByteBuffer.java:192) - locked [9ffffffe87d7eeb8] (a java.net.SocketOutputStream) - locked [9fffffff29698e60] (a com.ibm.rmi.util.buffer.SimpleByteBuffer) at com.ibm.rmi.iiop.IIOPOutputStream.writeTo(IIOPOutputStream.java:532) at com.ibm.rmi.iiop.Connection.write(Connection.java:2127) at com.ibm.rmi.iiop.Connection.sendFragment(Connection.java:2355) at com.ibm.rmi.iiop.IIOPOutputStream.sendFragment(IIOPOutputStream.java:189) at com.ibm.rmi.iiop.CDRWriter.completeFragment(CDRWriter.java:654) at com.ibm.rmi.iiop.CDROutputStream.alignAndReserve(CDROutputStream.java:272) at
...
com.ibm.rmi.io.IIOPOutputStream.simpleWriteObjectInternal(IIOPOutputStream.java:441) at com.ibm.rmi.io.IIOPOutputStream.simpleWriteObjectLoop(IIOPOutputStream.java:469) at com.ibm.rmi.io.IIOPOutputStream.simpleWriteObject(IIOPOutputStream.java:526) at com.ibm.rmi.io.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:168) at com.ibm.rmi.iiop.CDRWriter.write_value(CDRWriter.java:1194) at com.ibm.rmi.iiop.CDRWriter.write_value(CDRWriter.java:1212) at com.ibm.rmi.iiop.CDRWriter.writeAnyOpt(CDRWriter.java:899) at com.ibm.CORBA.iiop.UtilDelegateImpl.writeAny(UtilDelegateImpl.java:365) at javax.rmi.CORBA.Util.writeAny(Util.java:97) at com.adtec.pool.ejb._EJSRemote0SLECAPResPoolBean_c87de11f_Tie.getResData(_EJSRemote0SLECAPResPoolBean_c87de11f_Tie.java) at com.adtec.pool.ejb._EJSRemote0SLECAPResPoolBean_c87de11f_Tie._invoke(_EJSRemote0SLECAPResPoolBean_c87de11f_Tie.java) at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:622) at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:475) at com.ibm.rmi.iiop.ORB.process(ORB.java:504) at com.ibm.CORBA.iiop.ORB.process(ORB.java:1573) at com.ibm.rmi.iiop.Connection.respondTo(Connection.java:2793) at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2662) at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63) at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)
監控ejb的執行緒共61,發現wait on condition 12,wait on monitor 49.
其中ejb的物件讀取程式碼如下
public Object getResData(int type, String name) throws BaseException
{
ErrLog eLog;
try
{
isStratResPool();
Object retObj = null;
ConcurrentHashMap resPool = (ConcurrentHashMap)getResPool(type);
if (resPool != null) {
return resPool.get(name);
}
return retObj;
}
catch (BaseException e) {
...
} catch (Exception ex) {
...
}
}
public Object getResPool(int type) throws BaseException
{
ErrLog eLog;
try
{
isStratResPool();
switch (type)
{
case 1:
return PoolManager.getActionHashtable();
...
case 20:
return PoolManager.getTranPathHashtable();
}
try
{
...
} catch (Exception e) {
...
}
}
開一個例項,一個ejb ,例項的記憶體為8g,ejb為5g左右,併發100以上就出現鎖socket的現象。
以上是利用kill -3 生成的javacore檔案。
列印的堆疊如下:(比較長哈~_~)
at com.ibm.rmi.util.buffer.SimpleByteBuffer.flushTo(SimpleByteBuffer.java:192) - locked [9ffffffe87d7eeb8] (a java.net.SocketOutputStream) - locked [9fffffff29698e60] (a com.ibm.rmi.util.buffer.SimpleByteBuffer) at com.ibm.rmi.iiop.IIOPOutputStream.writeTo(IIOPOutputStream.java:532) at com.ibm.rmi.iiop.Connection.write(Connection.java:2127) at com.ibm.rmi.iiop.Connection.sendFragment(Connection.java:2355) at com.ibm.rmi.iiop.IIOPOutputStream.sendFragment(IIOPOutputStream.java:189) at com.ibm.rmi.iiop.CDRWriter.completeFragment(CDRWriter.java:654) at com.ibm.rmi.iiop.CDROutputStream.alignAndReserve(CDROutputStream.java:272) at
...
com.ibm.rmi.io.IIOPOutputStream.simpleWriteObjectInternal(IIOPOutputStream.java:441) at com.ibm.rmi.io.IIOPOutputStream.simpleWriteObjectLoop(IIOPOutputStream.java:469) at com.ibm.rmi.io.IIOPOutputStream.simpleWriteObject(IIOPOutputStream.java:526) at com.ibm.rmi.io.ValueHandlerImpl.writeValue(ValueHandlerImpl.java:168) at com.ibm.rmi.iiop.CDRWriter.write_value(CDRWriter.java:1194) at com.ibm.rmi.iiop.CDRWriter.write_value(CDRWriter.java:1212) at com.ibm.rmi.iiop.CDRWriter.writeAnyOpt(CDRWriter.java:899) at com.ibm.CORBA.iiop.UtilDelegateImpl.writeAny(UtilDelegateImpl.java:365) at javax.rmi.CORBA.Util.writeAny(Util.java:97) at com.adtec.pool.ejb._EJSRemote0SLECAPResPoolBean_c87de11f_Tie.getResData(_EJSRemote0SLECAPResPoolBean_c87de11f_Tie.java) at com.adtec.pool.ejb._EJSRemote0SLECAPResPoolBean_c87de11f_Tie._invoke(_EJSRemote0SLECAPResPoolBean_c87de11f_Tie.java) at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:622) at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:475) at com.ibm.rmi.iiop.ORB.process(ORB.java:504) at com.ibm.CORBA.iiop.ORB.process(ORB.java:1573) at com.ibm.rmi.iiop.Connection.respondTo(Connection.java:2793) at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2662) at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63) at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1527)
監控ejb的執行緒共61,發現wait on condition 12,wait on monitor 49.
其中ejb的物件讀取程式碼如下
public Object getResData(int type, String name) throws BaseException
{
ErrLog eLog;
try
{
isStratResPool();
Object retObj = null;
ConcurrentHashMap resPool = (ConcurrentHashMap)getResPool(type);
if (resPool != null) {
return resPool.get(name);
}
return retObj;
}
catch (BaseException e) {
...
} catch (Exception ex) {
...
}
}
public Object getResPool(int type) throws BaseException
{
ErrLog eLog;
try
{
isStratResPool();
switch (type)
{
case 1:
return PoolManager.getActionHashtable();
...
case 20:
return PoolManager.getTranPathHashtable();
}
try
{
...
} catch (Exception e) {
...
}
}
[該貼被admin於2009-05-13 17:56修改過]
相關文章
- 測試MySQL鎖的問題MySql
- 解鎖測試管理的核心問題,提升你的管理實力!
- ORACLE壓力測試Oracle
- laravel壓力測試Laravel
- MACOSXApacheab壓力測試MacApache
- NGINX壓力測試Nginx
- mysqlslap壓力測試MySql
- 壓力測試工具
- Linux下使用壓力測試工具stressLinux
- 有關 伺服器最佳化 和 壓力測試 的問題伺服器
- Linux下開源的DDR壓力測試工具Linux
- nginx壓力測試方法:Nginx
- 壓力測試指令碼指令碼
- Taurus.MVC 效能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET 版本MVCLinux
- (一)效能測試(壓力測試、負載測試)負載
- RestCloud測試平臺,支援壓力測試RESTCloud
- Taurus.MVC 效能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本MVCLinux
- 讓測試事半功倍軟體壓力測試工具分享,壓力測試報告怎麼收費?測試報告
- Apache Bench Web 壓力測試ApacheWeb
- oracle壓力測試之orastress!OracleAST
- 壓力測試工具之FIO
- webbench進行壓力測試Web
- mysqlslap壓力測試介紹MySql
- 壓力測試工具之mysqlslapMySql
- 網站壓力測試工具網站
- Mysql 壓力測試工具sysbenchMySql
- Oracle壓力測試:HammeroraOracle
- Jmeter效能測試 —— 壓力模式JMeter模式
- Apache下壓力測試工具ab安裝與使用Apache
- 開源的負載測試/壓力測試工具 NBomber負載
- apache ab壓力測試工具-批次壓測指令碼Apache指令碼
- MySQL字元函式的壓力測試MySql字元函式
- apache的ab命令做壓力測試Apache
- 軟體壓力測試怎麼做?出具壓力測試報告軟體測評中心測試報告
- Ab工具壓力測試.及相應檢視web服務排查問題Web
- 軟體壓力測試流程和測試工具分享,讓你寫壓力測試報告再也不愁測試報告
- 10大主流壓力測試工具
- oracle壓力測試之orabm(二)Oracle