金蝶K/3产品性能稳定性案例集
事件: 7:55:43 用户: N/A 计算机: HR 描述:
An exception occurred during activation.
System.Data.OleDb.OleDbException: 新事务不能登记到指定的事务处理器中。 at System.Data.OleDb.OleDbConnection.ProcessResults(Int32 hr) at System.Data.OleDb.OleDbConnection.InitializeProvider() at System.Data.OleDb.OleDbConnection.Open() at Kingdee.ERP.HRMS.Data.DbUpdate.Activate()
at System.EnterpriseServices.ServicedComponentProxy.DispatchActivate().
2、 解决方法:
在用户管理中将登陆操作的系统的用户加入到IIS_WPG用户组中。
2.3.3 通用案例3—- CPU100%
2.3.3.1 K/3在COM+组件中使用SPM缓存对象出现CPU100% 1、问题描述:
K/3在COM+组件中使用SPM缓存机制,在压力测试中发现当缓存对象时,经常出现CPU100%的情况。 2、问题分析:
1) COM+是无状态(Stateless)的,COM+不建议缓存。 2) 若用SPM缓存,不能缓存对象(无序列化),可以缓存RS,但建议缓存RS时转成
XML格式(序列化)。 3) 若真的需要缓存对象,可以使用GIT缓存对象,或在中间层服务器放一个数据库,
将需要缓存的数据放到数据库。
注意:SPM缓存不能缓存无序列化的对象。
2.3.4 通用案例4—-COM+性能问题
3.3.4.1 COM+长时间不重启性能变慢 1、问题描述:
K/3在中间层服务器若长时间不重启,会出现系统性能变慢的现象。主要表现为长时间运行内存增长,调用时间变长。
2、问题分析:
需要对问题进行定性,是程序挂起,还是程序导致高CPU,或者仅仅是Performance的问题。定位方法可以参见前面章节的介绍。 3、解决方法:
建议安装VB6最新Runtime避免内存泄露,及时打COM+的Service Pack,同时保证所有COM+组件编译是都选中unextended excution 和 remained in memory这两个选项,可以通过工具vbchkw2k进行检查(工具使用见辅助工具使用)。
WINDOWS允许为每个COM+包的组件开辟多个进程池,这样就可以将该组件的线程分散到不同的进程池中,有利于系统调度,减少进程的阻塞,提高系统服务性能。可
23
金蝶K/3产品性能稳定性案例集
以根据COM+组件应用的情况,合理设置每个com+包的进程数来提高性能,同时也可以对Desktop heap和MAX THREAD进行设置优化内存和提高性能(设置方法请见COM+性能解决方法)。
使用K/3性能监控工具查看各个组件的内存耗用情况,用Performance monitor收集机器信息,分析具体产生的原因。
注意:请确保COM+组件编译是都选中unextended excution 和 remained in memory这两个选
项。
7+N(cpu)< STA线程数< N(cpu)*10,若大于最大限制会导致崩溃。
2.3.5 通用案例5—-COM+安全性的问题
2.3.5.1 K/3中间层修改用户后,K/3客户端无法访问中间层 1、问题描述:
由于业务及安全需要,K/3中间层有多个管理员权限帐号,各个用户使用自己的帐号登陆K/3中间层进行日常操作,每次切换帐号时,正在使用K/3系统的客户端将提示错误无法使用,必须关闭K/3后,再次进入K/3(无需重启机器)才能使用。
2、问题分析:
由于K/3中间层COM+使用交互式用户注册,客户端访问COM+时,会使用K/3中间层的当前帐号,在中间层重启后,客户端被调起的COM代理仍然存在,并且保留了该信息,当再次使用COM+服务时,仍会使用原有帐号信息进行访问,导致错误。(如果用户使用一个管理员帐户,再修改管理员密码时,也会有同样的问题,微软工程师同时建议该访问方式下,COM+会拥有K/3中间层的当前帐号的所有权限,存在安全隐患)
3、解决方案:
用户使用微软的远程桌面连接进行不同用户不同帐号的日常操作。
注意:建议用户维护中间层服务器时若需要不同用户登录,使用微软的远程桌面连接进行。
2.3.5.2 IIS访问COM+的安全性问题 1、问题描述:
问题一: 在web服务器和com中间层服务器分别独立的情况下,如果web服务器是2003操作系统,而com服务器可以使win2003或者win2000,那么在asp页面中使用 server.createobject(“TypeLib.Class”)方式调用dcom对象失败。
使用GUI应用程序在web服务器上调用dcom对象同样失败。
报错“服务器对象: 006~ASP 0178~Server.CreateObject 访问错误~检查权限时Server.CreateObject 的调用失败。”。
问题二:Windows在使用IIS作为独立WEB服务器,COM+作为独立中间层服务器时,使用Wininet组件访问WEB服务器,偶尔出现不能访问的现象,需要把IIS中的匿名用户和COM+的启动用户设置为管理员才可以使用。 1) 建立两台Win2000 Server。
2) IIS及WEB站点安装在机器A上,WEB站点的应用程序保护使用:高。 3) COM+组件安装在机器B上。
4) 在A机器上的WEB站点的ASP页面中调用了B机器上的COM+组件。
24
金蝶K/3产品性能稳定性案例集
5) 客户端在机器C上,客户端程序用VB开发,期间调用WININET.dll实现对WEB
服务器A的ASP页面访问。
6) 在两台服务器A,B上建立相同的用户User(密码也相同),WEB站点的匿名访问
用户使用User,在WEB服务器上的组件服务中将应用:IIS-{默认 Web 站点//Root/KDWEB}的启动用户指定为User。
7) 在中间层服务器上指定相关COM+组件的启动用户为User。 8) 系统建立好后,第一次配置和访问都正常。
9) 经过多次配置后,约10%的系统会出现不能访问的情况,跟踪代码,发现ASP页
面创建COM+组件的对象时,CreateObject或者Server.CreateObject方法返回:拒绝的权限。一旦出现这种现象,基本只能重新安装服务器A,B的Windows系统才能解决问题。
2、问题分析:
Win2003上对于NetService安全级别有提高,可以使用下面解决方案解决。 Win2000上如果出现这样的问题,需要使用工具进行排查 1 收集安全事件日志
2 跨机器网络包进行分析,最好中间层服务器和Web服务器的网络包都截获, 3 对于包数据进行分析
已知有可能的原因如防火墙的问题导致拒绝访问,可以降低验证模式,两边设置同样用户。对于IIS默认应用程序保护级别的设置,一般都建议设为高,这个应用程序设置和拒绝访问这个错误没有关系。
3、解决方法:
在web服务器的虚拟目录上设置匿名访问用户为域用户帐号,可以正常访问。 方案1:
本地秘密匹配或者是域用户,可以解决上面问题,但必须手工设置。 方案2:
1. 打开%windir%\\System32\\Inetsrv\\MetaBase.xml,找到第二个iiswebserver元素的ServerComment中的需要设置的
子站点,找到Location属性,默认可能显示为/LM/W3SVC/1,这表示该站点ID为1。 2. 定位打开cmd.exe,定位目录到Drive:\\Inetpub\\AdminScripts ,
3. 运行:cscript adsutil.vbs set w3svc/WebSiteID/logonmethod 2,这里的WebSiteID就是上面找到的ID(1)。 4. 修改所有站点的登录方式:
定位打开cmd.exe,定位目录到Drive:\\Inetpub\\AdminScriptsr, 运行:cscript.exe adsutil.vbs set w3svc/logonmethod 2 屏幕显示如下:logonmethod : (INTEGER) 2
2.3.6 通用案例6—-COM+其他的问题
2.3.6.1将Win2000终端服务与Citrix Metaframe1.8一起使用时出现COM+和DCOM错误 1、问题描述:
在 Microsoft Windows 2000 上安装 Citrix Metaframe 1.8 之后,事件日志中出现以下错误信息。
在系统日志中:
25
金蝶K/3产品性能稳定性案例集
Event: 10010 Source: DCOM
Description:The server {02D4B3F1-FD88-11D1-960D-00805FC79235} did not register with DCOM within the required timeout.
在应用程序日志中:
Event:4097 Source: COM+ Description:The run-time environment has detected an inconsistency in its internal state.Please contact Microsoft Product Support Services to report this error.Error in .\\crmrecoveryclerkobj.cpp(1149), hr = 80070003:GetVolumeInformation
您也无法在该计算机上管理 COM+。如果尝试这样做,可能会导致出现一个包含以下文本的对话框:
An error occurred while processing the last operation.Error code 80080005 - Server execution failed.
The event log may contain additional troubleshooting information. 2、问题分析:
此行为是由安装 Citrix Metaframe 1.8 for Microsoft Windows 2000 以及在 Metaframe 安装期间使用驱动器重映射功能所导致的。在 Metaframe 重新映射系统驱动器时,它会遍历注册表,并将出现的所有旧驱动器号替换为新的重新映射的驱动器号。不过,COM+ 目录中的信息将被忽略。其中的一条关键信息是 COM+ 系统应用程序使用的“补偿资源管理器”(CRM) 日志文件的 COM+ 系统应用程序路径。每当 COM+ 系统应用程序启动时,它都要尝试读取其日志文件。因为找不到该日志文件,所以它就会记录一个错误并关闭。此行为每分钟会发生数次,具体频度取决于计算机上正在运行的应用程序。这一行为还使得无法在该计算机上管理 COM+。
3、解决方法:
Citrix 知识库文章 CTX240747 中介绍了此问题。要查看此文章,请在以下 Citrix Web 站点中搜索 Citrix 文档 ID“CTX240747”:
http://knowledgebase.citrix.com/cgi-bin/webcgi.exe?New,KB=CitrixKB
2.3.6.2 COM+应用程序损坏 1、问题描述:
Winxp sp2打开管理工具----组件服务----计算机----我的电脑-----COM+应用程序,弹出: 编录错误
执行最后操作时发生错误。
错误代码 80080005 -服务器运行失败
26
金蝶K/3产品性能稳定性案例集
打开事件查看器
COM+ 错误 ,事件ID为:4863 显示如下:
TransactionManager->GetWhereabouts 失败。如果将分布式事务处理协调器配置为使用远程主机来协调事务,则可能是由于无法与远程主机取得联系。可以通过在组件服务 MMC 管理单元中单击 MSDTC 工具栏按钮,将 MSDTC 配置为使用本地协调器。由于此刻无法继续执行,服务器进程终止。
服务器应用程序 ID: {02D4B3F1-FD88-11D1-960D-00805FC79235} 服务器应用程序实例 ID:
{935C3D5B-C694-4C52-82A2-3D4A21895802} 服务器应用程序名: System Application 错误代码= 0x8004d01b : 事务管理器可用。 COM+ 服务内部信息:
文件: d:\\qxp_slp\\com\\com1x\\src\\comsvcs\\txprop\\dtcinfo.cpp, 行: 164 Comsvcs.dll 文件版本: ENU 2001.12.4414.258 shp
2、解决方法:
cd %systemroot%\\system32 msdtc -uninstall msdtc -install 如果不行就看:
How to Clean Up a Damaged COM+ Catalog
http://support.microsoft.com/Default.aspx?id=315296
27
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库金蝶K3产品性能稳定性案例集(6)在线全文阅读。
相关推荐: