2010-01-27 63 views
2

我正在完成一個多線程應用程序的測試,該應用程序似乎正常工作,直到我把它放在重負載下,然後強調它正在運行的機器。然後我開始看到一些我沒有預見到的陌生邊緣案例會產生一些意想不到的/無法預料的情況。我強調機器的方式是在非常大的sqlite數據庫上運行真空。有沒有人有任何其他好方法來誘導這種類型的重載場景?什麼是誘發線程問題的好方法

回答

1

你指的是什麼樣的壓力?內存,CPU,完整線程池或文件I/O?我會寫一個簡單的應用程序,它有一個消耗內存的線程,一個消耗CPU週期的線程,一個綁定線程池的線程和一個使磁盤崩潰的線程。掛上一個用戶界面來控制每個線程的食慾,並調整「旋鈕」以鳴着你的應用程序。

+0

感謝您的想法。我想我會從這樣的事情中獲得最大的收益。 – 2010-02-12 14:31:50

2

你可以使用CHESS

+0

它的許可使用它從beeing使用它我的環境。 – 2010-02-12 14:32:16

1

由於不正確的鎖定導致的線程問題傾向於在重負載下顯示自身,因爲時序發生變化。實際上並不是產生問題的重負載,而是由於隨機調度延遲而改變的時序。通過在線程的執行中引入隨機延遲,您可以在沒有繁重負載的情況下重新編譯問題。這是國際象棋使用的方法。

相關問題