{eval=Array;=+count(Array);}
1、這個題目問得不那么準確,你必須要精準計算出每秒查詢時間(QPS)和事務(wù)時間(TPS),好比你感冒了,你說要配什么藥,醫(yī)生只能憑經(jīng)驗,你如果去抽象化驗,知道是病毒還是細菌感染,數(shù)量是多少后,才能進一步診斷和配置服務(wù)器硬件。
2、接下來,你要了解常用發(fā)中間件和數(shù)據(jù)庫的極限并發(fā)量。比如redis一般是11w左右(純粹內(nèi)存讀寫)、mysql每秒寫8w左右,讀10來萬(單表,多表就不一定,得看SQL的寫法),一般單表的存儲極限是5千萬左右,如果超出范圍,那么配置再好也是慢。總的說來,要精確配置服務(wù)器,你需要盡可能地評估最復(fù)雜的業(yè)務(wù)每秒并發(fā)時間,同時要考慮最復(fù)雜的情況,比如數(shù)據(jù)庫的數(shù)據(jù)規(guī)模、代碼在最高并發(fā)下,所耗費的時間,同時對網(wǎng)絡(luò)I/O也要有一個預(yù)估,知道帶寬的大小,總之,需要具體問題具體分析。
3、如果以上情況不考慮,就是想知道一個簡單粗暴的大概結(jié)果,一般8核、16G、256SSD,同時跑DB和web服務(wù)器的話,足夠支持1w的并發(fā)量,而且還有很大的冗余。如果火力全開,滿血跑,大概跑個8-10w都是有可能的。邊壓測,邊優(yōu)化,如果恰好旁邊有高手,榨干每一個環(huán)節(jié),你的并發(fā)量超出你的想象……
場景很重要,比如一萬并發(fā)的qps還是tps,這完全不同的概念。
服務(wù)器做做優(yōu)化,現(xiàn)在通過epoll支撐百萬連接十萬并發(fā)沒什么瓶頸。但是,這只是網(wǎng)絡(luò)層,如果落到具體業(yè)務(wù),那就另當(dāng)別論了。比如redis可以幾十萬并發(fā),因為只需要網(wǎng)絡(luò)io和訪問內(nèi)存。但是如果有業(yè)務(wù)處理,掛上了數(shù)據(jù)庫,走了kafka,并且再走redis,那就要具體問題具體分析了。
數(shù)據(jù)庫單存qps,我們原來基準測試結(jié)果是可以支撐六萬到八萬左右,但是有事務(wù)的增刪改絕對不是這個量級。
其實你需要的是一個基準測試的結(jié)果,例如tcp,http基準測試;tomcat基準測試;應(yīng)用框架基準測試;redis基準測試;mysql基準測試等。
我們做過應(yīng)用框架基準測試,基于springboot,測試接口沒什么邏輯,就是直接查詢sql并返回結(jié)果?;鶞蕼y試結(jié)果是八核16G內(nèi)存,跑兩個實例,可以撐到8萬并發(fā)左右,應(yīng)該還有優(yōu)化空間吧。
首先你要知道, 1w并發(fā)是什么. 1w就是QPS, 1w請求/秒. 所以不是只是和系統(tǒng)配置(容量)相關(guān), 如果要達到, 反而更應(yīng)該和時間相關(guān).
舉個例子, 假設(shè)平均你的服務(wù)處理時間(RT)是1秒, 那么在這一秒鐘內(nèi), 意味著有1w個線程同時執(zhí)行. 而實際即使是8核單機, 也是壓不上去的.
為什么? 因為你的服務(wù)太慢了, RT太長了. 那么把你的服務(wù)處理時間優(yōu)化縮減到0.1秒, 即100ms, 那么達到1w并發(fā)(QPS=1w/秒), 同時只需1k個線程在并發(fā)執(zhí)行就達到了.
以個人經(jīng)驗.對于Java來說, 1K大小的線程池不是什么大問題. 為了避免占GC時間過長, 配置500左右大小的線程池, 啟動2個JVM實例就可以達到.
而以1秒RT為基礎(chǔ)的1w線程池大小, 以個人經(jīng)驗, 在單機基本上壓不到的.
所以, 答案就是, 你應(yīng)該先關(guān)注RT, 縮小到平均100ms的經(jīng)驗值, 1w并發(fā)不是問題.
可以了解一下serverless。函數(shù)計算就是其中的代表實現(xiàn)了免運維,自動伸縮。也就是說你只用專注業(yè)務(wù) 無需管理服務(wù)器配置管理 不管多大并發(fā) 都能抗住,無需擔(dān)心服務(wù)器宕機,等一系列運維問題。你只需在適當(dāng)?shù)臅r候升級數(shù)據(jù)庫即可。在解決業(yè)務(wù)問題之前沒必要解決技術(shù)問題。之前也和你一樣,開發(fā)之前總是擔(dān)心服務(wù)器性能不夠怎么辦,雖然大部分情況下用戶可能沒有那么多,并發(fā)根本沒有想象中的大。但是等到一些列問題出現(xiàn)的時候再去找解決方案,就會很被動,不管是對公司還是個人造成很大壓力。所以建議了解serverless 函數(shù)計算完美解決了這一問題。最后安利一下ucloud云的函數(shù)計算,技術(shù)成熟,支持語言多,遷移項目方便。
您好,光網(wǎng)絡(luò)可能就不支持1w的并發(fā)了。
你說的這個配置是基礎(chǔ)配置,一來就是1w的高并發(fā)支持不了的。
由于各個功能模塊各個層次消耗不一樣,所以要具體看后期運營使用情況再來調(diào)整服務(wù)器配置。
要看性能要求了,如果只討論并發(fā)數(shù)量,用異步網(wǎng)絡(luò)模型,并發(fā)一萬個鏈接沒啥問題吧,只是數(shù)據(jù)處理不過來,大多數(shù)鏈接都是在等待結(jié)果而已。服務(wù)器配置1核8g差不多夠了吧
1m帶寬,1萬qps基本沒可能,就算平均包長128字節(jié)好了,撐死1000pps,假設(shè)一次交互完成,那頂了天500tps。那你這環(huán)境只可能是1萬活躍session了,應(yīng)該隨便搞臺pc機都能頂住
0
回答0
回答5
回答5
回答9
回答0
回答10
回答0
回答0
回答0
回答