【问题标题】:Multiple users accessing VFP App / dbase database over network - slow issues多个用户通过网络访问 VFP App / dbase 数据库 - 慢问题
【发布时间】:2013-07-15 14:39:45
【问题描述】:

我目前正在运行一个 VFP9 应用程序,它使用一个数据库,该数据库基本上是一个包含多个 DBF、FPT 和 CDX 文件的文件夹。

现在这个数据库基本上是在网络上共享的(1GB 网络/交换机/PC),供 50 多个用户访问。

现在我们有时会收到“尝试锁定”消息。我检查了硬件,没有发现任何问题或瓶颈。此外,有时超过 50 人可能会在几秒钟内访问甚至写入特定文件。

我通过 Google 在 Lanman 区域遇到了“Oplocks”的潜在问题,但这似乎在 Windows 2008 R2 / Windows 7 中不存在。也一直在阅读一般的 SMB,但我很机智结束。

我不知道接下来要看什么?也许我正在测试 VFP/Dbase 系统的功能极限?

有人可以帮忙吗?

谢谢 瑞恩

【问题讨论】:

  • 将您的应用程序/数据库移动到 Citrix 或终端服务器。

标签: locking dbf smb visual-foxpro dbase


【解决方案1】:

可能有很多事情,也可能是完全正常的 你有应用程序的源代码吗?

" .. 超过 50 人可能会在几秒钟内访问甚至写入特定文件 .." 对我来说你遇到锁定冲突并不奇怪。

Attempting to lock 消息仅仅意味着不止一个人试图访问同一个记录(或文件,如果是粗略的锁定)。

最近用户数量增加了吗?
系统是为这个卷设计的吗? 它会影响软件的某个特定功能(很可能应该如此),还是会影响整个系统的多个功能?

VFP 的技术限制是(我认为每个表 2 GB),实际上当有数百万条记录时它会变慢(巨大的概括)。当表变大时,良好的索引会有所帮助

这是系统上的间歇性信号(例如在午餐时间和晚上下班时间)还是系统上的持续或更频繁的负载?

如果您有源代码,您可以做很多事情,如果您没有,则需要弄清楚哪些 DBF 被锁定(它们将是其中包含大量记录且文件大小也可能很大的 DBF,当你看目录)

你有 VFP 本身还是这是一个编译的 EXE?

您有很多选择和可以做的事情,但需要更多信息。

尼克

【讨论】:

  • 在这种情况下,我们有一个“审计”文件。因此,无论有人访问系统的哪个区域,然后记录的任何操作都会记录到审计 dbf/fpt 中。我们有一个系统,所以审计文件可以变得很大(500mb),但它会在每个月初自动存档,以防止它变得荒谬。 VFP 程序本身是一个已编译的 EXE,无论机器如何都始终在本地访问,它只是通常通过网络访问的数据库位置本身(除非某些用户通过 RDP 访问服务器机器)
  • 那么我认为可能比每月更频繁地清除审计文件。
  • 使用VFP.EXE查看自动存档前后的审核文件,存档过程是完全清除还是部分清除
  • 使用 VFP 查看文件的原因 - 以防万一您现有的归档例程通过查看审计跟踪文件之前和存档后,您可以了解它正在做什么,它如何决定要删除多少记录等,因此如果您必须重新编写新的存档例程(没有文件命名限制),您会得到更好的通知。跨度>
  • 感谢您迄今为止的意见。归档确实有一个内置的每月命名约定。归档过程本身将看到上个月的任何记录,并将它们简单地删除并将它们放入一个全新的审计文件中,该文件仅供管理员访问。我怀疑您认为文件大小是一个问题是正确的,尽管由于用户没有再次就该问题与我联系,我想知道较小的文件是否会缓解问题,但不能从总体上解决问题。嗯
【解决方案2】:

对于应用程序运行缓慢,我知道一件事可能是个问题,尤其是当您有 50 个用户在使用 VFP 应用程序时。应用程序是否从服务器运行...我的意思是,每个用户都有指向类似

的快捷方式

S:\SomeShare\YourVFPApp.exe

如果是这种情况,那么这可能会严重影响性能。它正在为每个吸收流量的用户在网络上拉下应用程序。我对客户所做的如下。在机器的本地 C: 驱动器上选择一个位置...例如:C:\NetworkApps 并将 YourVFPApp.exe 复制到此 C:\NetworkApps 文件夹中。

接下来,创建一个指向 C:\NetworkApps\YourVFPApp.exe 的新快捷方式并保存。

接下来,修改快捷方式,但这一次,将“Start In”文件夹更改为原始位置,例如“S:\SomeShare\”。保存更改并运行此版本的快捷方式。

这基本上是在本地运行应用程序,但从共享的同一最终位置开始(尤其是在实施硬代码路径且难以处理的情况下)。这样做的目的是避免所有用户都需要通过网络获取应用程序并只处理实际的表和数据流量。

是的,当有应用程序更新时,这可能会有点痛苦,但为此,我编写了另一个 VFP 简单应用程序,它查看本地驱动器,将 exe 与“最新版本”的 exe 进行比较在网络共享上。如果服务器版本较新,请将其复制到本地,然后在预期的“S:\SomeShare\”文件夹中启动它。

至于锁定,如果您使用 TABLE 锁定与 RECORD 锁定,您显然会看到更多等待锁定消息的延迟问题,但清除应用程序端可能存在的网络瓶颈可能有助于缓解它。

【讨论】:

  • 嗨,是的,EXE 总是在本地访问,它只是通常通过网络共享访问的数据库文件(除非某些用户首先直接对服务器进行 RDP 访问,所以一切仍然是本地的)
  • 我们将其作为锁定记录运行,而不是锁定表。正如上面提到的人,可能部分是由于文件大小(读取和写入表所需的时间增加了 200mb),或者可能是由于 50 多个用户(并且正在增加)可能访问和写入表在任何时候。
猜你喜欢
  • 1970-01-01
  • 2015-07-25
  • 2022-10-14
  • 2019-01-25
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多