亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Linux下jvm、tomcat、mysql、log4j優化配置

系統 1820 0

??? 小菜一直對操作系統心存畏懼,以前也很少接觸,這次創業購買了Linux云主機,由于木有人幫忙,只能自己動手優化服務器了。。。。

???????? 小菜的云主機配置大致為:centeos6(32位),4核心cpu,4G內存,5M獨享帶寬。

????????

一、jvm內存優化方案。

?

???????? 要優化服務器,首先從jvm入手,分配好jvm內存,配置方案如下:

???????? declare -x JAVA_OPTS="-server -Xms1280M -Xmx1280M -Xmn512M -Xss1024k -XX:+AggressiveOpts -XX:+UseParallelGC? -XX:+UseBiasedLocking"

???????? 其中,-server是讓jvm在服務模式下運行,可以提高jvm運行效率,其他的就不用多操心了。

???????? -Xmx是最大內存,如果是32操作系統,2G內存以上,設置為1280G是最優的,設置太大了會造成jvm崩潰,這是32位jvm本身的限制造成的。

???????? -Xmn是最小內存,官方推薦為最大內存的3/8,這里取下整,就521M了

???????? -Xms為初始化內存,直接與最大內存一致,這樣可以避免內存重復分配,降低效率,直接上來就是最大的,jvm也不用再擴展內存了,節省時間。

???????? -Xss是每個線程所占用的內存,也就是每個線程的堆棧大小,太小了容易溢出,太大了會導致創建的線程數量減少,因為最大容量是有限的。這里最大內存為 1280M,理論上可以創建1000個左右線程,差不多支持500個并發訪問(是并發訪問哦,也就是500個用戶同一時刻點擊),已經相當可以了。

???????? -XX:+AggressiveOpts,加快編譯。

???????? -XX:+UseParallelGC,優化垃圾回收。

???????? -XX:+UseBiasedLocking,優化鎖機制。

????????

???????? 將上邊這條配置,添加到tomcat安裝目錄下的\bin\catalina.sh文件中,放在哪個位置無所謂,只要在cygwin=false這句話之前就可以了。????

?

二、tomcat服務器優化方案

????????

??????? ? 搞定了jvm,接下來就要配置tomcat了,配置如下:

??????

      
        1   
        
          <
          
            Connector 
            
              port
              
                ="80"
                
                   protocol
                  
                    ="HTTP/1.1" 
                    
                      2 
                      
                        3 
                        
                           maxHttpHeaderSize
                          
                            ="8192" 
                            
                              4 
                              
                                5 
                                
                                   maxThreads
                                  
                                    ="1000"
                                    
                                       minSpareThreads
                                      
                                        ="100"
                                        
                                           maxSpareThreads
                                          
                                            ="300" 
                                            
                                              6 
                                              
                                                7 
                                                
                                                   enableLookups
                                                  
                                                    ="false"
                                                    
                                                       redirectPort
                                                      
                                                        ="8443"
                                                        
                                                           acceptCount
                                                          
                                                            ="200" 
                                                            
                                                              8 
                                                              
                                                                9 
                                                                
                                                                   connectionTimeout
                                                                  
                                                                    ="50000"
                                                                    
                                                                       disableUploadTimeout
                                                                      
                                                                        ="true"
                                                                        
                                                                          /> 
                                                                        
                                                                      
                                                                    
                                                                  
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    

?

?

???????? 這些配置中,我們關心的有:

???????? maxThreads最大線程數,設為1000可以創建1000個線程,也就是1000個并發事務,大約可以支持500個完全并發訪問,這是一個相當恐怖的數字,可以試想一下,500個用戶同時點擊,是什么概率。

???????? minSpareThreads最小備用線程數,可以理解為,服務器一旦啟動,馬上創建這么多線程以備使用,因此設置太大了浪費資源,太小了會降低效率, 這個就要根據讀者的服務器配置和具體的訪問量來衡量,不能一概而論,我這里的設置僅僅是個參考,本服務器訪問量大約每天幾十萬pv,并且比較集中。

???????? maxSpareThreads最大備用線程數,創建的線程數量超過這個數量時,如果某些線程空閑,那么這些會被回收,直到線程總數量小于這個值。

???????? acceptCount當tomcat啟動的線程數達到最大時,等待的線程數量(注意并沒有新線程創建,只是預定了而已)。這個數值也需要根據實際情況設 置,如果設置的偏小,會造成很多請求直接被拒絕;如果設置的偏大,會造成很多請求超時,讀者理解一下吧!

???????? enableLookups關閉tomcat的dns查詢,節省帶寬,無需過多了解。

???????? disableUploadTimeout這個標志允許servlet container在一個servlet執行的時候,使用一個不同的,更長的連接超時。最終的結果是給servlet更長的時間以便完成其執行,或者在數 據上載的時候更長的超時時間,總之,就是為了保證每次請求都能順利完成。

?????? ? 將這段話復制到tomcat安裝目錄下的\conf\server.xml文件中。

???????? 注意,這個配置在server.xml中本來就存在,可能要和讀者以前的配置融合一下,別直接盲目覆蓋。。。

?

??? 三、MySQL優化方案

?

???????? Mysql優化,小菜了解到的就是修改最大連接數,因為mysql默認的最大連接數是100,對于稍微大點的項目,肯定是不夠的。

????? 項目端配置

???????? 最大連接數,首先要在程序里設定,如果您的項目采用的是JNDI方式配置的數據源,那么就要去tomcat安裝目錄下的\conf\server.xml 文件或\conf\context.xml文件里找到如下配置(小菜只是舉個例子,里邊的配置都是隨便寫的,關鍵是找到Resource節點):

      
         1  
        
          <
          
            Resource 
            
              name
              
                ="demo" 
                
                   2 
                  
                     auth
                    
                      ="Container" 
                      
                         3 
                        
                           type
                          
                            ="javax.sql.DataSource" 
                            
                               4 
                              
                                 maxActive
                                
                                  ="500" 
                                  
                                     5 
                                    
                                       maxIdle
                                      
                                        ="30" 
                                        
                                           6 
                                          
                                             maxWait
                                            
                                              ="5000" 
                                              
                                                 7 
                                                
                                                   username
                                                  
                                                    ="sa" 
                                                    
                                                       8 
                                                      
                                                         password
                                                        
                                                          ="" 
                                                          
                                                             9 
                                                            
                                                               driverClassName
                                                              
                                                                ="org.hsqldb.jdbcDriver" 
                                                                
                                                                  10 
                                                                  
                                                                     url
                                                                    
                                                                      ="jdbc:hsqldb:hsql://localhost/runqianDB" 
                                                                      
                                                                        />
                                                                      
                                                                    
                                                                  
                                                                
                                                              
                                                            
                                                          
                                                        
                                                      
                                                    
                                                  
                                                
                                              
                                            
                                          
                                        
                                      
                                    
                                  
                                
                              
                            
                          
                        
                      
                    
                  
                
              
            
          
        
      
    

???????? 這里我們需要關注的有:

???????? maxActive是指最大激活連接數為500,也就是說同時最多只可以有500個數據庫連接。這里也可以理解為并發,小菜覺得500已經不少啦,畢竟數 據讀完會自動釋放連接,如果您的主機配置不夠高,這里設置太多,比如什么3000,可能導致MySQL啟動失敗。

???????? maxIdle是最大空閑連接數,就算沒有使用數據庫,依然保持這么多連接,以便需要時直接用,提高效率。因為數據庫連接的創建過程相當的耗費時間。參考了很多網站,一般都是30左右,僅供參考!

???????? maxWait是最大等待時間,如果數據庫連接數不夠用,那么等待這么長時間,超過這個時間了就超時,設為-1表示無限等待。

???????? 如果您的項目采用的是JDBC配置,也就是項目中有一個properties文件,一般叫什么JDBC.properties、config.properties,具體叫什么小菜就不知道啦,然后里邊會有類似如下配置:

???????? JDBC.DriverClass=com.mysql.jdbc.Driver

???????? JDBC.Url=jdbc\:mysql\://localhost\:3306/xxx?useUnicode\=true&amp;characterEncoding\=utf8

???????? JDBC.User=xxx

???????? JDBC.Password=xxx

???????? JDBC.MaxPoolSize=500

???????? JDBC.MinPoolSize=30

???????? JDBC.WaitTime=5000

????????

???????? 這里的MaxPoolSize、MinPoolSize、WaitTime分別和上邊講的maxActive、maxIdle、maxWait對應,但這是小菜的項目,您的項目需要具體分析。。。。

????? 服務器端配置

???????? 項目配置好了之后,就要配置MySQL服務器了。

???????? 如果您的MySQL是5.0之前的版本,包括5.0,那么可以嘗試用如下方法修改MySQL最大連接數。

???????? 在linux系統中找到/usr/bin/mysqld_safe編輯它,找到mysqld啟動的那兩行,在后面加上參數 :

???????? -O max_connections=1000

???????? 用紅字特別說明:

?

???????? if test -z "$args"

? ???????? then

??? ???????? $NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking -O max_connections=1000 >> $err_log 2>&1

????? ??? else

????? ? ?? ? ev al "$NOHUP_NICENESS $ledir/$MYSQLD $defaults --basedir=$MY_BASEDIR_VERSION --datadir=$DATADIR $USER_OPTION --pid-file=$pid_file --skip-external-locking $args -O max_connections=1000 >> $err_log 2>&1"

?

????????這段代碼很不好找,在下也無法說清楚它具體在哪個位置。不過建議從最后往前找會比較快。

????????重啟mysql服務:# service mysql restart

????????查看當前最大連接數: mysqladmin -uroot -p variables

????????如果您的MySQL服務器是5.1之后的版本,包括5.1,或者您用上邊的方法不行,那么可以嘗試如下方法。

??????? 在linux系統中找到/etc/my.cnf文件,在里邊的[mysqld]節點下,添加:max_connections=500即可,500就是指最大連接數,可以隨意改。例如:

????????[mysqld]

????????datadir=/home/mysql

????????socket=/var/lib/mysql/mysql.sock

????????user=mysql

????????default-character-set = utf8

????????default-collation = utf8_general_ci

???????? max_connections=500

????????

???????? 這樣就搞了,重啟MySQL即可。

?

四、日志優化

?

???????? 日志的重要性不必多說,項目開發時,日志一般是直接輸出到控制臺上,方便查看。

???????? 但是項目實際發布時,就不能這樣做了,影響效率不說,我們也無法查看這些日志。

???????? 小菜的項目中用的是log4j,它有一個配置文件,叫log4j.properties,配置大致如下:

???????? log4j.rootLogger = INFO, R

???????? log4j.appender.R = org.apache.log4j.RollingFileAppender

???????? log4j.appender.R.File = /home/westjavatest/logs/ivlifelog4j.txt

???????? log4j.appender.R.MaxFileSize = 500KB

???????? log4j.appender.R.MaxBackupIndex = 1

???????? log4j.appender.R.layout = org.apache.log4j.PatternLayout

???????? log4j.appender.R.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n

?

???????? 這里我們需要的關注的有:

???????? log4j.rootLogger = INFO, R,這里的INFO指明了日志的級別,一般用INFO就可以了;R是輸出配置,名字隨便起,和下邊log4j.appender.R對應就可以了。

???????? log4j.appender.R.File指明了日志輸出路徑,注意linux下目錄的/和windows下目錄的\相反哦。

???????? log4j.appender.R.MaxFileSize是指每個日志文件的大小,這里設成了不超過500kb,一旦超過,會重新創建一個.txt日志文件。

???????? 其他參數就不那么重要了,有興趣的讀者可以自己去谷歌一下~

?

五、結束語

?

???????? 這些服務器的優化配置,小菜也是第一次接觸,花了很多時間從網上搜集而來的,因此整理一下,方便像小菜這樣的菜鳥。

???????? 這些配置,很多都是經驗數據,具體的參數需要根據您服務器的實際情況,進行一定的綜合分析、壓力測試之后,才得到的,小菜列舉的這些只是一般經驗,僅供參考。

???????? 最后祝愿大家優化順利!

?

?

原文出自:http://www.cnblogs.com/iyangyuan/p/3330152.html 另謝謝博主分享。

Linux下jvm、tomcat、mysql、log4j優化配置


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产精品美女流白浆视频 | 久久99热久久精品99 | 国产精品久久久久久网站 | 一级毛片一级片 | 暴劫倾情无删减在线播放 | 亚洲国产成人精品激情 | 国产精品一区二区手机看片 | 香蕉免费看一区二区三区 | 成人黄色免费网站 | 一级特黄特黄的大片免费 | 精品久久久久久久一区二区手机版 | 五月婷中文字幕 | 国产在线精品一区二区高清不卡 | 日本一区二区三区四区公司 | 国产网站免费视频 | 国产产一区二区三区久久毛片国语 | 91在线看片| 久久99亚洲精品久久频 | 九九久久久久午夜精选 | 成年女人18级毛片毛片免费观看 | 成人一级免费视频 | 麻豆国产高清精品国在线 | 奇米在线视频观看 | 99热久久这里只精品 | 亚洲欧美日韩中文字幕网址 | 久久噜| 天天干夜夜玩 | 天天干天天干天天干 | 亚洲精品久久九九热 | 国产成人久久精品二区三区牛 | 一级毛片视频 | 青青久在线视频免费视频 | 九月婷婷天天澡天天添天天爽 | 国产高清视频在线播放 | 欧美一级中文字幕 | 久久天天躁夜夜躁狠狠85麻豆 | 免费国产阿v视频在线观看 免费国产不卡午夜福在线 免费国产不卡午夜福在线观看 | 亚洲悠悠色综合中文字幕 | 美女很黄很黄免费 | 一级一级毛片免费播放 | 天堂亚洲国产日韩在线看 |