1秒1000并發,高并發需要什么樣的服務器?
目前使用的是MongoDB數據庫,需要4天的豪華云主機才勉強達到每秒8900并發。
如果需要根據數據量和業務復雜程度綜合評估硬件水平,建議購買兩臺云主機(4核8g內存)搭建集群環境。然后根據實際需要進行擴展。
軟件級別:
首先,如果是寫操作,它應該:
1.1使用消息隊列進行異步處理(如activemq等。)以避免消息擁塞。
1.2使用MongoDB的批量寫功能,比如每1000條數據寫一次。
第二,MongoDB采用集群模式部署,可以分散壓力。
第三,如果是讀操作,可以考慮添加redis,一級緩存熱點數據。
每秒1000的并發不算太高,簡單優化一下就行了,現在一般服務器應該可以支持。首先看一下linux系統的線程池分配和io限制。
當然不建議讓數據庫抗頻繁高并發。應該在整體架構上優化,架構緩存服務器是否可以考慮在數據庫上層,針對具體業務做一些優化。
多讀還是多寫,索引是怎么建立的?什么是慢速sql?單次訪問的數據量是多少?
從正常的角度來看,還遠遠談不上數據庫的性能瓶頸,具體問題具體分析。
硬件似乎夠用,程序優化更重要。
一般情況下,一個人站幾千是沒問題的。根據你的情況,問題可能在兩個方面:web服務的io或者DB。
影響web服務性能的關鍵因素是io和線程模型。web框架的性能(netty,mina等。)的nio用epoll系列會比bio高很多。
其次是DB、索引、os頁面緩存等等。
一個1000塊錢的程序員,可以寫出每秒1000個訂單的服務器。
寬帶肯定是幾十兆,硬件其實也沒問題。現在你可以用一臺非常便宜的pc來做一個分布式架構。至于內存和硬盤的大小,主要是根據數據和存儲的大小來決定的。希望我的回答能幫到你!
epoll模型的原理?
原則是
創建一個epoll模型實際上就是打開一個文件,epoll_create返回一個文件描述符。創建紅黑樹和就緒隊列。