问题现象
Windows操作系统,单机垂直集群,uap中间件,1个master+2个server。
每个server端增加了jvm参数后,各个server启动正常,但master启动不起来。每次启动master都会生成javacore文件。
问题分析
查看javacore发现。程序一般保护性错误导致系统崩溃。
查看前台输出日志发现
...
nc.bs.framework.exception.ConnectorSocketException: Remote request socket error
at nc.bs.framework.comn.cli.JavaURLCommunicator.request(JavaURLCommunicator.java:110)
at nc.bs.framework.comn.cli.ClientProxyImpl.urlCall(ClientProxyImpl.java:201)
at nc.bs.framework.comn.cli.ClientProxyImpl.invoke(ClientProxyImpl.java:148)
at $Proxy5.getAllLanguages(Unknown Source)
at nc.bs.ml.NCLangResOnserver.getAllLanguages(NCLangResOnserver.java:40)
at nc.vo.ml.AbstractNCLangRes.getAllLanguagesAsHM(AbstractNCLangRes.java:33)
at nc.vo.ml.AbstractNCLangRes.getLanguage(AbstractNCLangRes.java:50)
at nc.bs.ml.NCLangResOnserver.getCurrLanguage(NCLangResOnserver.java:161)
at nc.vo.ml.AbstractNCLangRes.getStringByPath(AbstractNCLangRes.java:87)
at nc.vo.ml.AbstractNCLangRes.getStrByID(AbstractNCLangRes.java:72)
at nc.bs.sm.login.AccountXMLProcessor.start(AccountXMLProcessor.java:26)
at nc.bs.framework.core.AbstractGenericContainer.startActive(AbstractGenericContainer.java:366)
at nc.bs.framework.core.AbstractGenericContainer.internalStart(AbstractGenericContainer.java:250)
at nc.bs.framework.core.AbstractGenericContainer.start(AbstractGenericContainer.java:208)
at nc.bs.framework.core.AbstractDeployer.start(AbstractDeployer.java:69)
at nc.bs.framework.server.deploy.ModulesMonitor.deploy(ModulesMonitor.java:207)
at nc.bs.framework.server.deploy.ModulesMonitor.scanModules(ModulesMonitor.java:178)
at nc.bs.framework.server.deploy.ModulesMonitor.start(ModulesMonitor.java:86)
at nc.bs.framework.server.BusinessAppServer.afterInternalStart(BusinessAppServer.java:322)
at nc.bs.framework.core.AbstractGenericContainer.start(AbstractGenericContainer.java:209)
at nc.bs.framework.server.WebApplicationStartupHook.contextInitialized(WebApplicationStartupHook.java:37)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:393)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:254)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:241)
at java.net.Socket.connect(Socket.java:556)
at java.net.Socket.connect(Socket.java:504)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:403)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:521)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:246)
at sun.net.www.http.HttpClient.New(HttpClient.java:320)
at sun.net.www.http.HttpClient.New(HttpClient.java:337)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:838)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:790)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:715)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:882)
at nc.bs.framework.comn.cli.JavaURLCommunicator.request(JavaURLCommunicator.java:78)
... 20 more
nc.bs.framework.exception.ConnectorSocketException: Remote request socket error
at nc.bs.framework.comn.cli.JavaURLCommunicator.request(JavaURLCommunicator.java:110)
at nc.bs.framework.comn.cli.ClientProxyImpl.urlCall(ClientProxyImpl.java:201)
at nc.bs.framework.comn.cli.ClientProxyImpl.invoke(ClientProxyImpl.java:148)
at $Proxy5.getAllLanguages(Unknown Source)
at nc.bs.ml.NCLangResOnserver.getAllLanguages(NCLangResOnserver.java:40)
at nc.vo.ml.AbstractNCLangRes.getAllLanguagesAsHM(AbstractNCLangRes.java:33)
at nc.vo.ml.AbstractNCLangRes.getLanguage(AbstractNCLangRes.java:50)
at nc.bs.ml.NCLangResOnserver.getCurrLanguage(NCLangResOnserver.java:161)
at nc.vo.ml.AbstractNCLangRes.getStringByPath(AbstractNCLangRes.java:87)
at nc.vo.ml.AbstractNCLangRes.getStrByID(AbstractNCLangRes.java:72)
at nc.bs.sm.login.AccountXMLProcessor.start(AccountXMLProcessor.java:26)
at nc.bs.framework.core.AbstractGenericContainer.startActive(AbstractGenericContainer.java:366)
at nc.bs.framework.core.AbstractGenericContainer.internalStart(AbstractGenericContainer.java:250)
at nc.bs.framework.core.AbstractGenericContainer.start(AbstractGenericContainer.java:208)
at nc.bs.framework.core.AbstractDeployer.start(AbstractDeployer.java:69)
at nc.bs.framework.server.deploy.ModulesMonitor.deploy(ModulesMonitor.java:207)
at nc.bs.framework.server.deploy.ModulesMonitor.scanModules(ModulesMonitor.java:178)
at nc.bs.framework.server.deploy.ModulesMonitor.start(ModulesMonitor.java:86)
at nc.bs.framework.server.BusinessAppServer.afterInternalStart(BusinessAppServer.java:322)
at nc.bs.framework.core.AbstractGenericContainer.start(AbstractGenericContainer.java:209)
at nc.bs.framework.server.WebApplicationStartupHook.contextInitialized(WebApplicationStartupHook.java:37)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:393)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:254)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:241)
at java.net.Socket.connect(Socket.java:556)
at java.net.Socket.connect(Socket.java:504)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:403)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:521)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:246)
at sun.net.www.http.HttpClient.New(HttpClient.java:320)
at sun.net.www.http.HttpClient.New(HttpClient.java:337)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:838)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:790)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:715)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:882)
at nc.bs.framework.comn.cli.JavaURLCommunicator.request(JavaURLCommunicator.java:78)
... 20 more
...
怀疑是使用了IBM jdk导致。让一线顾问排查发现,确实客户使用的是IBM的jdk,把NC自带的ufjdk路径下的内容删除,替换成IBMjdk的内容。
友云音在部署NC5系列产品时,NC和WAS中间件所使用的参数是不同的。使用IBM的jdk也应当视为使用WAS中间件。
解决办法
2种办法都可解决此类问题。
- 在master参数前增加-Xjit:exclude={com/cn/bup/Hsed.*} 参数,重启master即可。
- 把jdk从IBM的换成Oracle的即可。