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