我将我的经典asp站点从IIS6迁移到功能强大的Windows Server 2008 R2和IIS7.5服务器,但实际运行速度更慢。
每次对MSAccess数据库的简单调用都将永远进行。很多时候,由于会话超时(120秒),请求被删除。
知道什么可能导致问题以及如何解决问题?
谢谢。
答案 0 :(得分:3)
在指责Access并转移到SQL Server Express或其他数据库之前,您需要确保知道减速发生的位置。
从您的动作来看,看起来至少有些查询甚至不起作用(IIS在120秒后超时)。
访问数据库,特别是如果它们由少数并发用户在本地访问,则很快
移动到另一个数据库可能会或可能不会解决问题,但它可能比解决当前Access数据库的问题要多得多。
也就是说,如果您的网站需要为大量并发用户服务(例如每次超过50个),您可能需要考虑迁移到完整的数据库服务器,例如MySQL,SQL Server Express或PostgreSQL。
要确保仔细检查的一些事项:
数据库损坏。确保定期使用 Compact and Repair 作为常规维护措施(首先进行备份)。
文件系统权限不正确。
确保您的IIS进程具有数据库所在文件夹的读/写权限,以便能够创建锁定文件(.ldb
或。laccdb
,具体取决于您使用的是.mdb
1}}或新的.accdb
数据库格式。)
相关问题是IIS进程必须能够在临时文件夹中创建临时文件,例如%SystemDrive%\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp
。
错误的查询。使用Access打开数据库并运行查询以检查它们确实需要多长时间以及它们是否返回任何错误 如果存在数据完整性问题,则可能是查询返回意外结果,这可能会对您的asp页面中的代码产生奇怪的副作用。
检查IIS日志是否有错误。同时检查操作系统事件日志 确保没有其他错误可能导致该行为。
请确保profile your asp code确切地找出代码的哪些查询和部分内容较慢且哪些内容正常。
一旦解决了问题。通过保持数据库打开来提高性能,以避免始终创建/删除锁定文件(这会对性能产生巨大影响)。
有关上述某些主题的更详细信息的良好参考:Using Classic ASP with Microsoft Access Databases on IIS