一、若是啓動什麼都不設,會怎樣?java
先來看一個命令服務器
[root@localhost bin]# java -XX:+PrintCommandLineFlags -version
-XX:InitialHeapSize=29899008 -XX:MaxHeapSize=478384128 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)併發
通常來講,什麼都不設,應用程序的初始內存會很大,垃圾回收器使用的是ParallelGC,這個在新生代是沒什麼問題的,但問題時老年代,老年代用的是串行回收器,這對於多核CPU來講是一個巨大的浪費,建議配置:-Xmx256M -Xms64M(這兩項根據實際狀況定,建議設爲相等) -XX:+UseParallelOldGC -XX:ParallelGCThreads=8(具體根據你的CPU核數設定) -XX:PermSize=32M(根據你的應用程序產生的類的數量決定)網站
二、一個網站的最大併發量和吞吐量ui
首先吞吐量並不等於併發量,吞吐量是 每秒鐘request/事務 數量 ,併發量是 系統同時處理的request/事務數spa
吞吐量 = 併發量/響應時間。.net
有時候有很大的吞吐量的時候未必能構成併發,由於有時間間隔,要達到併發須要訪問量足夠大,幾乎同時到達。線程
最大吞吐量是有極限的,跟單臺服務器的配置以及JVM的設參有關係,由於GC回收垃圾須要時間,系統不響應你也沒辦法。blog
最大併發量其實跟系統有關,是一個計算機術語,哪怕是1秒內,相差毫秒級也不會構成併發,構成併發實際上是同時,這個值跟計算機的線程數有關係,而線程數又跟計算機的核數有關係,這個值也不是越大越好,由於線程切換須要時間,線程多了反而會拖慢系統。事務
這裏面有些是我的看法,若是有不對,歡迎你們指出,謝謝!
三、壓測最大吞吐量的方法
Jmeter壓測,設置線程參數,Http請求參數以及混合報表。
具體這個Throughput值就是咱們要的吞吐量的極限值。再乘以一天的秒數就是日最大吞吐量。