2

我們在俄羅斯和其他獨聯體國家運行着相當流行的一種叫做BEST的老式會計系統。它全部建立在FoxPro(而不是Visual Foxpro)DBF/CDX表格上。它是開放的,它沒有與其他軟件交互的API。所以我們必須使用直接訪問表和數據。DBF/CDX文件幾乎每天都變得無法訪問

我們使用Sybase Advantage數據庫服務器Internet連接器(ADS)將我們的在線商店連接到BEST數據庫,並接收最新信息並重新寫入訂單。 BEST用戶以終端模式工作在Windows Server 2003 R2 SP2上 - 因此所有可執行文件都運行並且所有表/索引文件在Windows Server上本地打開,但不通過網絡打開。

最近2年,我們遇到了頻繁的數據庫文件鎖定問題。首先,我們認爲我們有Foxpro索引文件損壞,因爲來自ADS的所有錯誤都與索引文件相關。但後來我們發現這些文件(包括DBF和CDX)都可以正常使用,重啓後它們可以正常打開。通常問題發生在3個表格:RBOOK(訂單),RBOOKM(訂單內容)和MKART(關於商品數量,儲量等的存儲信息)。一些用戶繼續使用這些文件,而其他用戶則無法打開它們。我可以用Windows資源管理器複製文件,我可以用FIWIN dbf-viewer打開表格,但我不能用ADS或BEST。

由於問題沒有立即顯示,因此很難排除故障。沒有系統事件日誌值以某種方式與它連接。不幸的是,BEST沒有正常的日誌文件(只是一個文件,它寫入最後的錯誤,通常說錯誤打開索引文件)。問題頻出 - 它每天發生差不多,但每次它發生在不同的時間。我們試圖找到任何規律,但我們失敗了。有10個連續日沒有問題的時期,然後回到「日常基礎」。重啓是我們情況的唯一方式。無需重新啓動(只需關閉所有應用程序和重新索引),問題很快就會重演。

我們不能使用SysInternals Handles.exe實用程序,因爲它總是說沒有足夠的資源來運行。我們使用Windows任務管理器查看應用程序打開的句柄數 - 但最大的數字是Outlook,acronis MMS服務和svchost。沒有與我們的表有關的進程與> 1K句柄。我們試圖關閉所有可能的東西(AV軟件,備份,不必要的utils),我們限制訪問整個部門,我們記錄訪問有問題的文件,我們嘗試改變很多Windows註冊表項,這些註冊表項以某種方式連接到文件,鎖定(oplocks) ,網絡,內存和手柄限制等。但沒有運氣。我們乾淨地重新安裝了服務器,但這也沒有幫助。我們更換了內存,硬盤,網絡交換機。後來我們更換了整個服務器。我們改變了電源。我們重新創建了用戶簡檔。我們在用戶機器和網絡電纜上更換了網卡,然後讓所有人都可以訪問終端。我們試圖監視資源並做了其他事情,但一切都很正常。

下面是在RBOOKM索引文件訪問問題期間拍攝的Unlocker實用程序的屏幕截圖。 http://cl.ly/image/292d17111A3B 我覺得很奇怪,很多進程具有相同的文件的句柄文件ID,而其他人有獨特的句柄。

這可能是這個問題連一兩件事 - 我們注意到,在一些情況下,CPU使用的是60%以上和系統工作rahter

你有什麼想法?我會非常感謝你。

+0

眼看着把手實用失敗的問題這聽起來像是對我潛在問題的一個非常強烈的暗示。如果您沒有看到明顯的處理泄漏跡象,很難猜測機器將耗盡哪種資源,通常它與內核內存池相關。這個問題與編程無關,這個網站的主題。 –

+0

你說得對,我應該在ServerFault上提問。 – pablomedok

回答

0

我的公司(和其他人)看到了一個問題,SMB2顯然會導致xBase類型語言中的DBF和索引文件損壞。我們嘗試了許多與您提到的相同的修復方法,甚至嘗試使用Wireshark監控網絡流量。嘗試在字符串「foxpro index corruption smb version」上搜索Google以獲取更多信息。該修復最終將通過註冊表項禁用服務器上的SMB2。我不記得哪個,但是你應該能夠使用那個Google搜索找到信息。

+0

此鏈接應該讓Pablo獲得必要的信息:http://fox.wikis.com/wc.dll?Wiki~OpportunisticLocking –

+0

謝謝,添馬艦。我在記憶我們確切的調查內容時遇到了一些麻煩,並且忘記了所有關於機會主義鎖定的內容 - 這是幾年前的事情,我們都試圖儘快忘記:-)。 – LAK

+0

感謝您的答案。但是這似乎並不成問題,正如我上面所說的,我們嘗試禁用OpLocks。事實上,現在所有的用戶都在使用終端服務器來訪問會計系統,所以沒有網絡事務發生,因此機會鎖不會發生。 – pablomedok

0

您不會說您正在運行的Windows服務器 - 除非您有Server 2008或2008 R2或更高版本以及Vista,Windows 7或Windows 8客戶端連接到它,否則SMB2不是問題。

假設你是服務器在2008年,2008R2或2012年則出現了由微軟發佈了一些SMB2相關的修補程序可能適用:

  1. 確保Server 2008是在正確的Service Pack級別。對於Windows Server 2008,這是Service Pack 2.對於Windows Server 2008 R2,這是Service Pack 1(在撰寫本文時)。
  2. 確保Windows 7客戶端位於正確的Service Pack級別。這是Service Pack 1(在撰寫本文時)。
  3. 確保Windows Server 2008上的SMB2啓用。它將在默認情況下啓用,除非它在某些時候已被明確禁用。
  4. 在Windows 2008 Server上安裝修補程序Windows6.0-KB2635024-x86,以解決SMB2中的文件損壞問題。
  5. 在每個Windows 7工作站上,根據需要將網絡驅動程序更新到最新版本。從2009年起,OEM安裝的驅動程序不會削​​減它!
  6. 在每個Windows 7工作站上,配置的網卡在可能的情況下禁用中斷控制,並強制爲100Mbps或1Gbps全雙工(取決於網絡速度)。
  7. 在每個Windows 7工作站上,安裝修補程序Windows6.1-KB2618096-x86以解決SMB2中的另一個文件損壞問題。
+0

對不起,我忘了澄清。我們正在運行Windows Server 2003 R2 SP2。在我看來,問題是關於鎖定索引文件,但沒有損壞的索引文件。 BEST或ADS無法訪問這些文件。所以,SMB2不是原因。當我打開我的電腦 - >管理 - >共享文件夾 - >打開文件時,網絡中沒有打開的數據庫文件。所以,這不是關於網絡。 – pablomedok

0

acronis是罪魁禍首。 當它在後臺運行,它會導致各種像你與DBF/CDX文件中提到的一個 卸載或關閉了一段時間,並檢查問題解決