我希望能就如何处理我们正在处理的问题提出一些建议。
我们目前的设置如下。我们开发了一个Kentico 7站点作为现有外联网站点的替换/升级,我们自1999年以来已成功使用该站点。 现有站点是用经典的asp编写的,并使用dll与Visual FoxPro后端进行通信,后端将所需的html作为字符串返回。 我们现在在新的Kentico站点中使用相同的机制来返回相同的html(表,列表等),我们只是重新设置css等以匹配我们的新框架。框架使用aspx模型,并且dll调用存在于用户控件中,该控件被添加到需要显示FoxPro内容的相关aspx页面。这一切都很好,两个系统完全匹配。
我们现在处于部署的试验阶段,并开始遇到以下问题。
当2个或更多用户点击包含dll用户控件的同一页面时,同时一个用户将挂起。浏览器中没有错误消息,挂起的用户无法通过刷新清除此消息,但必须关闭浏览器。在测试中,我有3个用户来显示页面,第4个用于挂起,但结果没有一致性,这可能只是时间安排。主要问题是任何对dll的并发调用都会导致挂起,因此我们不能有超过2-3个用户同时访问内容页面。挂起时,服务器上的事件查看器显示以下应用程序错误
错误应用程序名称:w3wp.exe,版本:7.5.7601.17514,时间戳:0x4ce7a5f8
错误模块名称:vfp9r.dll,版本:9.0.0.5815,时间戳:0x4713a718
例外代码:0xc0000005
故障偏移:0x001d9b1e
错误进程id:0xd58
故障应用程序启动时间:0x01cf7366d3a89dda
错误的应用程序路径:C:\ Windows \ SysWOW64 \ inetsrv \ w3wp.exe
错误模块路径:C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ VFP \ vfp9r.dll
报告ID:9365d933-df5a-11e3-ada3-000c29e9b4d4
可能相关的一个区域是现有站点在2003服务器上的IIS6上运行,但应用程序池配置为在Web园中使用6个工作进程。从论坛上我看到Kentico不允许超过1个工作进程,所以这可能是瓶颈。新站点在2008r2服务器上的IIS7.5上运行。如果我使用6个工作进程配置新站点,问题就会大大减少,因为只有1个浏览器挂起时我有8个同时点击 - 这在再次点击链接时有效。我的疑问是,如果我不能使用多个工作进程,我可以通过其他任何方式配置iis / apppool或站点设置以防止锁定/挂起错误。如果是锁定问题,我可以将设置更改为以牺牲速度为代价排队所有内容,只需增加服务器规格即可进行补偿。
到目前为止,我尝试过以下方法: 该DLL是32位多线程,我尝试更改MTA设置没有任何效果 将“禁用重叠的回收”设置更改为“true”,但不起作用。
我不是IIS配置方面的专家,因此任何关于从哪里开始的建议都会感激不尽。