1

我将我的经典 asp 站点从 IIS6 迁移到了一个功能非常强大的服务器,其中包含 Windows Server 2008 R2 和 IIS7.5,但它实际上运行得更慢。

对 MSAccess 数据库的每一次简单调用都需要很长时间。由于会话超时(120 秒),请求多次被丢弃。

知道什么会导致问题以及如何解决吗?

谢谢你。

4

1 回答 1

3

在指责 Access 并迁移到 SQL Server Express 或其他数据库之前,您需要确保知道减速发生的位置。

从您的动作来看,看起来至少有一些查询甚至不起作用(IIS 在 120 秒后超时)。

Access 数据库,特别是当少数并发用户在本地访问它们时,速度很快。
迁移到另一个数据库可能会或可能不会解决问题,但它可能比解决当前 Access 数据库的问题要多得多。
也就是说,如果您的网站需要为大量并发用户提供服务(比如一次超过 50 个),您可能需要考虑迁移到完整的数据库服务器,例如 MySQL、SQL Server Express 或 PostgreSQL。

确保您仔细检查的几件事:

  • 损坏的数据库。确保您定期使用Compact and Repair作为定期维护措施(首先进行备份)。

  • 文件系统权限不正确。
    确保您的 IIS 进程对数据库所在的文件夹具有读/写权限,以便它能够创建锁定文件(.ldb或 .laccdb取决于您使用.mdb的是新的数据库格式还是新的.accdb数据库格式)。

  • 一个相关的问题是 IIS 进程必须能够在临时文件夹中创建临时文件,例如 %SystemDrive%\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp.

  • 不好的查询。使用 Access 打开数据库并运行查询以检查它们实际需要多长时间以及是否返回任何错误。
    如果存在数据完整性问题,则可能是查询返回了可能对您的 asp 页面中的代码产生奇怪副作用的意外结果。

  • 检查您的 IIS 日志是否有错误。还要检查操作系统事件日志。
    确保没有其他可能错误地导致该行为的错误。

  • 确保您分析您的 asp 代码,以准确找出哪些查询和代码部分很慢,哪些很好。

  • 一旦你解决了你的问题。通过保持数据库打开来提高性能,以避免一直创建/删除锁定文件(这会对性能产生巨大影响)。

一个很好的参考,其中包含有关上述某些主题的更详细信息:在 IIS 上使用经典 ASP 和 Microsoft Access 数据库

于 2013-08-12T08:20:06.473 回答