用友股份-LE服务支持部技术方案--《NC常见环境问题之操作系统篇》建立日期:2013-01-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-JS-2013-00082/24文档控制创建记录审阅人姓名所属部门职位审阅签字发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-01-01V1.03目录1:登录NC界面乱码问题......................................................................................42:NC5.0服务器端基础表数据缓存配置...............................................................53:NC中间件启动不了的一个问题........................................................................75:NC在Solaris10中的安装注意事项...................................................................76:NC501游标过多,不释放问题.........................................................................87:NC部分节点乱码:双机热备软件启动参数设置问题........................................98:NC502生成ejb出错........................................................................................109:NC5011外部交换平台导不了凭证问题..........................................................1010:NC5X-IUFO与NC分离...................................................................................1211:NC客户端反复下载缓存代码问题解决........................................................1312:NC5自己中间件如何配置https....................................................................2013:xmanager连接到linux问题..........................................................................2314:登陆NC系统无法正常全屏显示的问题.......................................................2315:NCV5环境中NC目录不能含中文名等特殊字符.......................................2441:登录NC界面乱码问题下面是遇到的两种情况:1如果是linux或unix,需要检查exportLANG=后面设置的字符集是否正确。如果正确,还要检查是否有不可见字符.如在WINDOWS下编辑,然后传到linux或unix,会出现类似^^^的字符,需要用vi编辑,然后删除掉.2.可能由于服务器端版本的缓存问题.如将下面的文件删除掉即可.%USERPROFILE%\CACHE\version_1842312509_NC502.records如果是小型机,应该在你登录安装并启动NC的用户主目录下,如/home/root目录下对应的cache目录或者根目录下/CACHE目录下.例子:问题现象:部署成功后,登陆界面显示不出来,界面出现现象是一些乱码,无法显示中文。问题分析:查看后台日志如下:Causedby:java.io.InvalidClassException:nc.bs.framework.common.InvocationInfo;SerializableincompatiblewithExternalizable代码类与外部环境不一致。解决办法:5C:\DocumentsandSettings\Administrator\CACHE,清除这个目录下面的所有内容,重新启动was,问题解决。分析:服务器缓存无法自动更新导致前台界面无法正常显示如果是小型机,应该在你登录安装并启动NC的用户主目录下,如/home/root目录下对应的cache目录或者根目录下/CACHE目录下.2:NC5.0服务器端基础表数据缓存配置在NC5.0的服务器端,启用客户端数据缓存后,可以对基础表的缓存信息进行配置,如表的数据量较大时,如果每个客户端下载数据时,都将该表的全部数据都下载到客户端,则客户端缓存的数据量将会很大,此时可以将该表按公司过滤,每个客户端登录后仅下载该登录公司的数据.这样可以提高下载的效率.在服务器端的配置方法为:在cacheconfig.xml文件中修改,该文件的位置为..\home\resources\cacheconfig\cacheconfig.xml如果需要按公司pk_corp过滤,则CorpFilter的值为true,不按公司过滤则设置为false.另外,如果按公司过滤,则该表中必须有字段pk_corp,否则会出错.
pk_corptruefalsefalsetrue6falsepk_deptdoctruefalsefalsetruefalsepk_psndoctruefalsefalse7truetrue…………….在”客户化二次开发工具缓存管理缓存数据管理”节点,也可以启动数据缓存.同时在缓存数据管理节点,也可以通过界面对表进行缓存配置(如按公司过滤数据),但是这样配置仅对该客户端起作用,对其它客户端不起作用.同时该节点主要是开发调试用.如果需要配置数据表缓存,请到服务器端进行配置,这样对所有的客户端都能使用.现在能做数据缓存的表也是有限的,在cacheconfig.xml中已经列出了所有能缓存的表.可以在这个文件中修改具体某个表的配置信息3:NC中间件启动不了的一个问题一客户的hpunix上启动NC501,界面打印一行启动server后便直接跳出来,也不报任何错误。刚开始怀疑是jdk的问题,但java程序用该jdk都已经运行进去了,程序运行了一小段自己跳出来,应该跟jdk环境无关。后来看sysconfig里面的server配置,该机器有3个网卡,3个ip,server里配置的是其中一个ip,把该ip改成hosts文件里的第一个ip,再启动NC,能正常启动。5:NC在Solaris10中的安装注意事项NC安装,配置及启动时,需要设置JAVA_HOME在AIX和HPUNIX时,需要设置如下:#exportJAVA_HOME=/IBMWAS/AppServer/java8即使用在AIX和HPUNIX中安装的JAVA路径但是,在SUNSolaris中,需要使用SUN自己的JDK,设置如下:#JAVA_HOME=/usr/jdk/instances/jdk1.5.0#exportJAVA_HOME然后执行./wasSysconfig.sh或./ncSysConfig.sh时才能运行.另外:在SUNSolaris下设置JAVA_HOME路径,必须分两步骤:#JAVA_HOME=/usr/jdk/instances/jdk1.5.0#exportJAVA_HOME如果使用#exportJAVA_HOME=/usr/jdk/instances/jdk1.5.0会报错.6:NC501游标过多,不释放问题现象:前台报错超出游标最大数,经常审核或记账的时候出现,但是重启中间件后几天内不出现该现象。游标参数已经修改,(open_cursors)已经修改为15000。问题分析:查看当前游标打开最大数selectcount(*)fromv$open_cursor;发现当前打开游标已经到1.1w。后台大量游标个执行SELECTNULLAStable_cat,o.ownerAStable_schem,这种语句。解决:在501的uap平台的jdbc存在连接泄露,uap提供jdbc补丁,提供解决方案。该补丁在NC_UAP汇总补丁中.9总结:数据库通过数据字典视图查看数据库问题,如:v$process:处理器的信息,v$session:会话信息,v$transaction:事务信息等。7:NC部分节点乱码:双机热备软件启动参数设置问题现象:aix服务器通过双机软件进行配置启动中间件。发现使用部分节点有乱码。例如:帐套管理以及语言选择出现乱码查看:aix下手动启动WAS没有问题,但是如果用HA启动对应脚本来启动was,发现使用部分节点有乱码。解决:经过查看发现HA软件带入LANG=Zh_CN参数无法在HA脚本中生效,后来修改为LC_ALL=Zh_CN,后就可以正常显示中文了。总结:UNIX字符集级别。其优先级别是:LC_ALL>LC_*>LANGLANG,LC_*的默认值,是最低级别的设置,如果LC_*没有设置,则使用LANG。类似于LC_ALL,它是一个宏,如果该值设置了,则该值会覆盖所有LC_*的设置值。注意,LANG的值不受该宏影响.#localeLANG=zh_CNLC_COLLATE="zh_CN"LC_CTYPE=zh_CNLC_MONETARY=zh_CNLC_NUMERIC="zh_CN"LC_TIME=zh_CNLC_MESSAGES=zh_CN10LC_ALL=zh_CN8:NC502生成ejb出错查看:wasSysConfig.log日志信息,[java]C:\ufsoft\nchome\bin\buildwas.xml:55:Thefollowingerroroccurredwhileexecutingthisline:[java]C:\ufsoft\nchome\temp\ejbgenerator.xml:12:1字节UTF-8序列的无效字节1。分析:ejbgenerator.xml是由buildwas.xml根据nc安装模块生成的,查看该文件内容发现lib/wasresource.jarlib/复件ncsecurity.jar。结果中文导致生成ejb失败。9:NC5011外部交换平台导不了凭证问题问题现象:北京某项目;NC5011+WAS6107+IBMP570(专门一台570建立了5个server来通过外部交换平台导凭证),5月底又开始出现当导凭证的人一多,用了一会然后大家就都导不进去了;分析:1:分别加端口号5个端口一个个试,有的端口可以有的端口不行;2:开始怀疑是服务器端客商缓存的问题,将200个公司平均分配到5个端口,此问题依然存在3:查找到对应端口对应的java进程:通过kill-3PID生成javacore(进程中详细线程信息),查看导不进去时对应服务器端任务线程停留在什么地方4:发现:数十个外部交换平台任务处于这种状态11ThreadName:WebContainer:758State:RunnableJavaStackatjava/net/SocketInputStream.socketRead0(NativeMethod)atjava/net/SocketInputStream.read(SocketInputStream.java:155(CompiledCode))atjava/io/BufferedInputStream.fill(BufferedInputStream.java:229(CompiledCode))atjava/io/BufferedInputStream.read1(BufferedInputStream.java:267(CompiledCode))atjava/io/BufferedInputStream.read(BufferedInputStream.java:324(CompiledCode))atsun/net/www/http/HttpClient.parseHTTPHeader(HttpClient.java:636(CompiledCode))atsun/net/www/http/HttpClient.parseHTTP(HttpClient.java:585(CompiledCode))atsun/net/www/protocol/http/HttpURLConnection.getInputStream(HttpURLConnection.java:912(CompiledCode))atnc/bs/framework/comn/cli/JavaURLCommunicator.request(JavaURLCommunicator.java:62(CompiledCode))atnc/bs/framework/comn/cli/ClientProxyImpl.a(ClientProxyImpl.java:166(CompiledCode))atnc/bs/framework/comn/cli/ClientProxyImpl.invoke(ClientProxyImpl.java:123(CompiledCode))at$Proxy8.getOutDateVersions(BytecodePC:18(CompiledCode))atnc/vo/cache/ext/ObjectCacheVersionMonitor.isCacheOutOfDate(ObjectCacheVersionMonitor.java:47(CompiledCode))atnc/vo/cache/ext/ElementVersionSensitiveMap.get(ElementVersionSensitiveMap.java:77(CompiledCode))atnc/bs/pfxx/RegisterInfoCenter.getCachedBasdocValue(RegisterInfoCenter.java:147(CompiledCode))atnc/bs/pfxx/XChangeContext.getCachedBasdocValue(XChangeContext.java:563(CompiledCode))….发现问题即当前任务都停留在外部交换平台导入时与master进程同步缓存版本这块;外部交换一个导入任务启动时默认是每隔3秒检查一下本地与服务器端对应缓存的版本是否匹配,在大并发导入凭证情况下,这种过于频繁的进程间通信(TCP/IP,NC自己的一个任务程序实现)导致了堵塞解决问题当时是修改了代码中对应3秒检查更改为每5分钟检查一次12修改后导凭证慢问题解决.10:NC5X-IUFO与NC分离分离原因:在某些项目中NC和IUFO部署在一起,如果出现某种效率问题,会造成IUFO和NC性能都下降的情况,因此分离NC和IUFO的部署,有助与NC与IUFO效率的提高。以下是分离原则:分离后NC上没有IUFO的后台任务和调度分离后IUFO上没有NC的后台任务和调度分离方法1:复制代码形成NCHOME,IUFOHOME2:NC应用中删除iufo的数据源。3:将NC代码下,将modules下的iufo目录删除。4:将NC501,NC5011安装盘下NC_UAP\uap\uapother下的code.jar解压5:解压完后在code目录下,把modules\iufo拷贝到/nchome/modules/下。6:重新生成部署ejb7:如果IUFO下配置了service,非集群环境下,那么在ncsysconfig/wassysconfig下删除服务。集群环境下,保留service8:IUFOHOME下,在ncsysconfig/wassysconfig下有ScheduleEngine,不要启用调度。9:在NC下修改iufo的超链接修改nchome/webapps/nc_web/logo/下的iufo.txt文件。在前面加上地址,如:13http://192.167.0.88:9086/service/~iufo/nc.ui.iufo.login.Index10:在IUFO下去掉NC的超链接删除nchome/webapps/nc_web/logo/下的nc.txt文件。11:如果是内外网应用的话,就不要在NC下修改iufo的超链接,这样iufo会访问不了。访问IUFO只能让客户端指定IP+端口。如果用了was,建议重新创建一个profile,新建一个节点,把iufo部署在这个节点下的一个server下。然后在防火墙或者路由器上进行端口映射访问。〔或者按照既定的内外网访问方案就行〕如果没有用was,可以直接在防火墙或者路由器上进行端口映射。〔或者按照既定的内外网访问方案就行〕11:NC客户端反复下载缓存代码问题解决在有些客户环境,可能会出现登录或者打开节点时反复下载缓存代码,这样就会造成登录慢或者打开节慢,使用NC效率严重下降,特别是外网使用,原因是由于应用服务器的关于代码版本的CACHE有些混乱。可能是由于打补丁放错目录造成。问题现象第一次使用nc后,关闭ie浏览器,当第二次再打开应用服务器时再次下载缓存代码,有时不一定每次会下载,但有相当机率在下载14前台可以看到反复再次下载缓存代码下载的缓存代码大小达10.77m15前台详细下载日志如下:JavaPlug-in1.5.0_07使用JRE版本1.5.0_07JavaHotSpot(TM)ClientVM用户主目录=C:\DocumentsandSettings\AdministratorCodesarecachedattheclientside.调试:downloadingthejarfile:C:\DocumentsandSettings\Administrator\NCCACHE\168.1.3.242_-home-ufida-ufsoft_80/CODE\lib\uiuapsystemframework.jar调试:downloadingpatchorresourcefile:Loader3.class调试:downloadingpatchorresourcefile:LoginUISupport$1.class调试:downloadingpatchorresourcefile:LoginUISupport$10.class调试:downloadingpatchorresourcefile:LoginUISupport$11.class16。。。。。。。。调试:downloadingpatchorresourcefile:SimpleLoginUI.class调试:download(version):nc.ui.sm.loginui.SimpleLoginUI,updateServerversioninfotoclientVersionfile调试:downloadingthejarfile:C:\DocumentsandSettings\Administrator\NCCACHE\168.1.3.242_-home-ufida-ufsoft_80/CODE\lib\pubuapsystemframework.jar。。。。。。。。。。。。。。。。调试:downloadingpatchorresourcefile:UITree$EnhancedDefaultTreeCellRenderer.class调试:downloadingpatchorresourcefile:UITree.class调试:downloadingpatchorresourcefile:UIRefPane$1.class调试:downloadingpatchorresourcefile:UIRefPane$IvjEventHandler.class。。。。。。。。。。。。。。。。。。。。。。。。调试:downloadingpatchorresourcefile:CommonMessageVO.class调试:downloadingpatchorresourcefile:MessageinfoVO.class调试:nodownload(version):nc.vo.wfengine.definition.WorkflowDefinitionVO,updateServerversioninfotoclientVersionfile正常情况,应为下图所示,不会大量下载缓存代码:17正常情况下载数据为125kbyte18正常的前台详细日志,下载代码比之前少JavaPlug-in1.5.0_07使用JRE版本1.5.0_07JavaHotSpot(TM)ClientVM用户主目录=C:\DocumentsandSettings\AdministratorCodesarecachedattheclientside.调试:InitInvokeProxy...调试:SERVICELOOKUP_URL:http://168.1.3.242:80/ServiceLookuperServlet调试:SERVICEDISPATCH_URL:http://168.1.3.242:80/ServiceDispatcherServlet调试:InitInvokeProxyFinished19[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:55[anonymous]DEBUG-Invokenc.bs.framework.server.RemoteMetaContext.lookupwriteinfotoserverspendtime:109[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:55[anonymous]DEBUG-Invokenc.bs.framework.server.RemoteMetaContext.lookupreadresultfromserverspendtime:281[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:55[anonymous]DEBUG-entermethod:nc.itf.uap.ml.IMultiLanguageService.getLangResBoundleFiles(java.lang.String,[Ljava.lang.String;)[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:55[anonymous]DEBUG-Invokenc.itf.uap.ml.IMultiLanguageService.getLangResBoundleFileswriteinfotoserverspendtime:0[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:55[anonymous]DEBUG-Invokenc.itf.uap.ml.IMultiLanguageService.getLangResBoundleFilesreadresultfromserverspendtime:156[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:55[anonymous]DEBUG-leavemethod:nc.itf.uap.ml.IMultiLanguageService.getLangResBoundleFiles(java.lang.String,[Ljava.lang.String;),spendtime:156[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:56[anonymous]DEBUG-entermethod:nc.itf.uap.ml.IMultiLanguageService.getLangResBoundleFiles(java.lang.String,[Ljava.lang.String;)[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:56[anonymous]DEBUG-Invokenc.itf.uap.ml.IMultiLanguageService.getLangResBoundleFileswriteinfotoserverspendtime:0[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:56[anonymous]DEBUG-Invokenc.itf.uap.ml.IMultiLanguageService.getLangResBoundleFilesreadresultfromserverspendtime:31-Invokenc.itf.uap.ml.IMultiLanguageService.getAllLanguageswriteinfotoserverspendtime:31[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:56[anonymous]DEBUG-Invokenc.itf.uap.ml.IMultiLanguageService.getAllLanguagesreadresultfromserverspendtime:16[threadapplet-nc.ui.sm.login.AppletContainer.class]2009/04/1414:24:56[anonymous]DEBUG-leavemethod:nc.itf.uap.ml.IMultiLanguageService.getAllLanguages(),spendtime:47[Thread-8]2009/04/1414:24:56[anonymous]DEBUG-CLASSLOADER:nc.bs.framework.codesync.client.NCClassLoader@2016b020[Thread-8]2009/04/1414:24:56[anonymous]DEBUG-URL:file:/C:/DocumentsandSettings/Administrator/NCCACHE/168.1.3.242_-home-ufida-ufsoft_80/CODE//images/v5control/banner.gif8解决办法:(1)../modules目录里面可能因为打补丁错误,把补丁放错位置,直接放在../modules目录,../modules目录只能有NC系统内标准的目录,不能建立其它无用目录,备份打包文件也不能放在此目录,删除错误的目录。(2)删除../bin/*.cache文件,4个文件(3)删除/root/CACHE目录(4)重新生成部署was,重新启动was服务.12:NC5自己中间件如何配置https1:生成服务器端证书在nchome/ufjdk/bin目录下运行:利用JDK自带的keytool即可完成。命令如下:keytool-genkey-aliastomcat-keyalgRSA输入keystore密码:************您的名字与姓氏是什么?[Unknown]:Wakan.Jiang您的组织单位名称是什么?[Unknown]:ZZNode您的组织名称是什么?21[Unknown]:ZZNode您所在的城市或区域名称是什么?[Unknown]:BeiJing您所在的州或省份名称是什么?[Unknown]:BeiJing该单位的两字母国家代码是什么[Unknown]:CNCN=Wakan.Jiang,OU=ZZNode,O=ZZNode,L=BeiJing,ST=BeiJing,C=CN正确吗?[否]:Y输入
的主密码(如果和keystore密码相同,按回车):特别说明:上边输入的“的主密码”,与keystore密码一定要相同,否则TOMCAT起不来。至少我试了几次都不行。报错如下:org.apache.coyote.http11.Http11BaseProtocolinit严重:Errorinitializingendpointjava.io.IOException:Cannotrecoverkeyatorg.apache.tomcat.util.net.jsse.JSSE14SocketFactory.init(JSSE14SocketFactory.java:125)生成的文件.keystore在用户的home目录下,可以把它拷贝出来放在你想放的目录,比如d:\ufsoft222:修改server.xml在D:\ufsoft\nchome\domain\server\conf/server.xml中,修改与SSL相关的那一段,我改成下面这样:这里要指定keystorePass,如果写错了,会出现下边的错误:严重:Errorinitializingendpointjava.io.IOException:Keystorewastamperedwith,orpasswordwasincorrectatsun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:768)三、启动Tomcat这一步比较简单,就不多说了。启动NC完成后,在浏览器中输入:https://localhost:8443,即可看到NC的主页面。2313:xmanager连接到linux问题在用xmanager连接到linux,然后在运行ncsysConfig的时候报以下错误:_X11TransSocketINETConnect()can'tgetaddressforlocalhost:6001:Name>>orservicenotknownError:Can'topendisplay:localhost:1.0本来以为是没有设置DISPLAY环境,后来折腾了半天发现是/etc/hosts文件里没有设置127.0.0.1localhost,大家以后如果碰到类似的问题可以试着这么去做。14:登陆NC系统无法正常全屏显示的问题这段时间连续遇到几个用户出现登陆NC系统无法正常全屏显示的问题,问题表现为:在登陆NC系统后,全屏显示IE浏览器,结果右边部分(注销、快速切换、日志、帮助等)为空白了,无法看到任何数据和菜单。测试了多次后发现问题的可能性及解决办法如下:1、可以尝试调整屏幕分辨率,有一部分HP的台式机调整后就可以正常显示了;2、如果无法调整分辨率,则可以尝试更新计算机的显卡驱动程序;3、有一些液晶显示器的分辨率只能是60Hz的,则可能将IE浏览器缩小(不使用全屏),就可以正常显示各个功能菜单了,不过画面变小了,客户可能会不适应。4、还可以尝试的方法,有一部分用户使用的是“http://IP地址/login.jsp”这个地址来登陆NC系统,就是直接进入NC登陆界面,而没有通过“产品登陆界面”来登陆,也可能造成这个问题,可以尝试直接登陆“http://IP地址/”后再进入NC系统的方式来解决,有一些用户是使用这个办24法来解决的。15:NCV5环境中NC目录不能含中文名等特殊字符问题表现:启动ncconfig.bat时报classNotFoundorg.apche.***.Main问题分析:类路径存在问题或者类不存在解决方式:将路径名字中的中文字符去掉就可。即NCV5如果路径中包含中文名字则存在问题。(ant的路径解析对中文字符存在问题)