2009-11-25 29 views
1

我可以在哪裏找到不同網絡架構的基準測試?我可以在哪裏找到不同網絡架構的基準測試?

我在玩套接字/線程/叉,我想知道最好的是什麼。我認爲必須有一個地方已經有人已經闡述了不同體系結構的所有優點和缺點,並列出了運行代碼的基準測試。

最終我想用我自己的代碼運行這些不同的配置,並查看哪些運行在不同情況下最好。

我跟我說過的很多人說我應該只使用單線程選擇。但是當你在線程中存儲狀態信息以保持代碼簡單時,我會看到線程的一個參數。編寫我自己的狀態結構與使用經過驗證的線程架構之間的折衷標記是什麼?

我也被告知分叉是壞的......但是當你需要一臺機器上的12000連接時,無法提高每個進程限制的打開文件,分叉是一個選項!當你有一個需要重新啓動的進程時,分叉也是穩定的好選擇,它不會打擾其他進程。

對不起,這是我較長的問題之一......這麼多變量都是空的。

感謝, Chenz

回答

0

這是很難回答這個問題,因爲這在很大程度上取決於你的服務究竟是幹什麼。它是否需要查詢數據庫?從文件系統讀取文件?執行復雜的計算?去談談其他一些服務?另外,客戶端連接有多久?可能連接與其他連接有一些語義上的相互作用,還是它們都被視爲彼此獨立?您可能想考慮稍後在多臺服務器上負載均衡您的服務嗎? (如果是這樣,那麼現在就可以有用地考慮這一點,以便可以從一開始就設計出任何必要的幫助。)

正如您所提示的那樣,服務機器可能具有與各種技術相互作用的限制,將您指向一個答案或其他。你有一個per-process文件描述符限制,但是請記住,你也可能有一個固定大小的進程表!無論如何,你期望有多少併發客戶?

如果你的服務一直崩潰,你需要重新啓動它,或者你認爲你想要一個多進程模型,以便連接彼此隔離,那麼你可能做錯了。在這種背景下,穩定性是非常重要的,這意味着良好的習慣和記憶衛生,無論是在一般情況下,還是面對基於網絡的攻擊。

記住歷史...... fork()在Unix世界很便宜,但在Windows上產生相對昂貴的新進程。 OTOH,Windows線程是輕量級的,而線程對於Unix來說一直是一個陌生人,只是最近才變得普遍。

+0

這就是爲什麼多種基準證明會有用。 – 2009-12-07 15:05:09

相關問題