在我的網站上,我使用線程來執行從網站下載CSV並將數據解析到數據庫中的功能。背景中持續運行的線程是否會影響網站的性能?
現在,如果我無法停止線程,那麼對性能會有什麼影響?
另外如果我在不知不覺中啓動另一個線程,那麼它會影響我的網站的性能?
謝謝。
在我的網站上,我使用線程來執行從網站下載CSV並將數據解析到數據庫中的功能。背景中持續運行的線程是否會影響網站的性能?
現在,如果我無法停止線程,那麼對性能會有什麼影響?
另外如果我在不知不覺中啓動另一個線程,那麼它會影響我的網站的性能?
謝謝。
線程作爲用戶交互的一部分被觸發嗎?如果沒有,那麼最好在網站外部運行,比如說通過Windows調度程序。
IIS使用線程來處理入站請求。因此,啓動大量線程可能會影響IIS處理新請求的能力。這篇文章可以幫助
如果你響應用戶的輸入,那麼你不會真的打亂你的網站。網站往往比CPU綁定更多的內存限制,所以CPU通常可以處理一些額外的線程。
Simon
如果您使用ThreadPool創建工作項目,那麼是的,這將直接帶走一個線索,否則這個線程將用於爲您的網站提供請求,但使用線程不會影響您的網站爲請求提供服務的能力,太多吃掉cpu或io的線程會嚴重降低網站的響應速度。您要尋找的就是這個甜蜜點,您可以從中獲得多線程的好處,而無需爲您的站點提供足夠的資源來響應請求。
線程的結構影響有限,當它沒有做任何事情(〜1MB內存),但它確實有衝擊時:
您的線程在與您的網站相同的硬件上運行,因此它將佔用資源份額。如果你有很多核心,那麼一個繁忙的線程不應該引起太多問題,除非你有一個非常繁忙的網站。可能更多的問題是您的線程正在錘擊磁盤驅動器。這種資源往往不能很好地處理併發訪問。如果你的網站不需要磁盤訪問,這不是一個問題。
如果您的線程偶爾會下載CSV文件並將其切碎到數據庫中,那麼與您的網站同時運行應該沒有問題。