阿里雲1G內存服務器,如何優化,10000人訪問不卡頓

很多同學剛開始做項目買了最低配置,但有時運行軟件好幾個,服務器就趴下來,以我的經驗可以這麼搞,儘量運行必須要用的軟件,1G內存能幹什麼,所以……,還可以優化軟件本身,讓啟動時儘可能少佔用內存空間,等用戶上來再升級配置也不遲。

TOMCAT優化

tomcat7默認內存配置,啟動後,大約會佔四百多M內存,如果是java程序又比較大,可能會出現以下問題:

java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出

java.lang.OutOfMemoryError: PermGen space ---- PermGen space溢出。

java.lang.StackOverflowError ---- 棧溢出

解決辦法:

linux下的tomcat:

修改tomcat/bin/catalina.sh

位置cygwin=false前。

JAVA_OPTS="-server -Xms256m -Xmx512m -XX:PermSize=64M -XX:MaxPermSize=128m"

Windows下的tomcat

在"echo "Using CATALINA_BASE: $CATALINA_BASE""上面加入以下行:

JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

重啟生效

下面這段大多數人都不看,留著備用吧

JVM參數說明

-server:一定要作為第一個參數,在多個CUP時性能佳

-Xms:java Heap初始化大小。默認物理內存的1/64

-Xmx:java Heap最大值。建議平均物理內存的一般。不可超過物理內存。

-XX:PermSize:設定內存的永久保存區初始化大小,缺省為64M

-XX:MaxPermSize:設定內存的永久保存區最大大小,缺省委64M、

-XX:SurvivorRatio=2:生還者池的大小,默認是2,如果垃圾回收變成了瓶頸,您可以嘗試定值生成池設置

-XX:NewSize:新生成的池初始化大小,缺省為2M。

-XX:MaxNewSize:新生成的池最大大小。缺省為32M。

這參數讓JVM忽略Xmx參數,瘋狂地吃完一個G物理內存,再吃盡1個G的swap。

-Xss:每個線程的Stack大小,-Xss 15120這使得JBoss沒增加一個線程就會消耗15M內存,而最佳值應該是128k,默認512k

-verbose:gc 實現垃圾回收信息

-Xloggc:gc.log指定垃圾收集日誌文件

-Xmn:young generation的heap大小,一般設置為Xmx的3,4之一

-XX:+UseParNewGC:所短minor收集的時間

-XX:+UserConcMarkSweepGC:所短major收集的時間 次選項在Heap Size比較大而且Major收集較長的情況下使用更合適。

-XX:userParNewGC 可用來設置多個並行收集

-XX:ParallelGCThreads可用來增加並行度

-XX:UseParallelGC設置後可以使用並行清理收集器

-XX:+UseBiasedLocking非競爭性的同步選項,鎖機制的性能改善。

-XX:+DisableExplicitGC 禁止System.gc(),免得程序員誤調用gc方法影響性能。

-XX:MaxTenuringThreshold 為放置所有的複製全部發生以及希望對象從eden擴展到舊域,可以把MaxTenuring Threshold設置成0。設置完成後,實際上就不再使用救助空間了,因此應把SurvivorRatio設成最大值以最大化Eden空間,設置如下:

-XX:+UseParNewGC 對年輕代採用多線程並行回收,這樣收得快。

-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情況下, 儘量減少 mark 的時間

-XX:LargePageSizeInBytes 指定 Java heap的分頁頁面大小

-XX:MaxTenuringThreshold 設置垃圾最大年齡。

----

----

MySQL優化

mysql默認啟動,會佔用四百多M內存,也可以優化。

linux下,打開/etc/my.cnf

阿里雲1G內存服務器,如何優化,10000人訪問不卡頓

重啟生效

看一下兩個軟件同時運行佔用內存情況

阿里雲1G內存服務器,如何優化,10000人訪問不卡頓

歡迎關注、轉發、收藏、評論

相關推薦

推薦中...