gc伺服器慢的原因分析
在工作環境中有一臺gc的伺服器,已經好幾年沒有動過了,上面安裝著gc的服務和資料庫,也就說gc裡面的HttpServer,資料庫,webcache都在這臺伺服器上。
大家在訪問gc的時候,感覺有些時候訪問很慢,儘管是內網,但是還是有很大的延遲的感覺,大家認為可能是監控的機器比較多了,也就沒有在意,今天我抽空檢視了下這臺機器,還是發現了一些問題。
首先看看gc的服務是否正常。我們也可以使用opmn來檢測。
$ ./opmnctl status
Processes in Instance: EnterpriseManager0.cyoumon.cyou.com
-------------------+--------------------+---------+---------
ias-component | process-type | pid | status
-------------------+--------------------+---------+---------
DSA | DSA | N/A | Down
HTTP_Server | HTTP_Server | 20850 | Alive
LogLoader | logloaderd | 29381 | Alive
dcm-daemon | dcm-daemon | 29428 | Alive
OC4J | home | 20851 | Alive
OC4J | OC4J_EMPROV | 20852 | Alive
OC4J | OC4J_EM | 20853 | Alive
OC4J | OCMRepeater | 20855 | Alive
WebCache | WebCache | 20863 | Alive
WebCache | WebCacheAdmin | 20857 | Alive
這也就是例行檢查,如果服務有問題,就不只是卡了。不過還是看了下,簡單驗證一下。
然後就是檢視系統的情況
檢視系統,我分為以下幾個部分來看。
首先檢視系統版本,發現這是一個比較老的版本,還是redhat 4
$ cat /etc/issue
Red Hat Enterprise Linux AS release 4 (Nahant Update 8)
Kernel \r on an \m
檢視CPU的資訊如下:
有8個物理CPU,8個邏輯CPU,CPU算是比較老的配置
$ ksh cpuinfo.sh
**************************************
CPU Physical NO: 8
CPU Processor NO: 8
CPU Core NO: cpu cores : 1
CPU model name : Intel(R) Xeon(R) CPU E5504 @ 2.00GHz
**************************************
這個配置在現在看來還是比較緊俏的。
但是這個肯定不是最根本的原因,不能一有問題就全部歸結在硬體上,這個也是硬傷,不會說改進就改進,畢竟很多服務跑了很多年了。
我們來看看系統的負載
這個時候還是使用傳統的top
可以看到還是存在大量的swap現象,
top - 14:07:46 up xxxx days, 19:18, 4 users, load average: 0.05, 0.16, 0.12
Tasks: 175 total, 1 running, 174 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.7% us, 0.1% sy, 0.0% ni, 98.7% id, 0.5% wa, 0.0% hi, 0.0% si
Mem: 16430320k total, 16375716k used, 54604k free, 9680k buffers
Swap: 8385920k total, 3468324k used, 4917596k free, 4501616k cached
使用vmstat檢視swap的情況
$ vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 3483652 50404 4896 4480752 14 4 48 42 0 0 1 0 99 0
0 0 3483652 51260 4936 4480712 0 0 0 332 1062 2594 0 0 100 0
0 0 3483652 52108 4936 4480712 0 0 0 0 1004 2565 0 0 100 0
0 0 3483652 52116 4936 4480712 0 0 0 0 1005 2468 0 0 100 0
0 0 3483652 55988 4940 4480776 0 0 16 92 1119 2705 0 0 99 0
可以從中看出很明顯的swap,大概是3G的樣子
如果這個時候來看系統的整體負載,還是使用sar,可以看到idle基本都在99%左右,所以說盡管在這樣的情況下,還是存在問題,CPU儘管配置不高,但是利用率也確實不高。
$ sar
07:40:01 AM CPU %user %nice %system %iowait %idle
07:50:01 AM all 0.49 0.00 0.10 0.08 99.33
08:00:01 AM all 0.63 0.00 0.12 0.16 99.09
08:10:01 AM all 0.60 0.00 0.13 0.40 98.87
08:20:01 AM all 0.62 0.00 0.11 0.12 99.15
08:30:01 AM all 0.65 0.00 0.11 0.11 99.12
08:40:01 AM all 0.49 0.00 0.10 0.09 99.32
08:50:01 AM all 0.48 0.00 0.13 0.29 99.09
09:00:01 AM all 0.54 0.00 0.10 0.07 99.30
09:10:01 AM all 0.67 0.00 0.14 0.35 98.84
09:20:02 AM all 0.66 0.00 0.13 0.28 98.92
09:30:01 AM all 0.66 0.00 0.12 0.13 99.10
09:40:01 AM all 0.61 0.00 0.11 0.14 99.14
09:50:02 AM all 0.50 0.00 0.13 0.25 99.12
10:00:01 AM all 0.55 0.00 0.11 0.19 99.15
10:10:01 AM all 0.59 0.00 0.13 0.31 98.98
10:20:01 AM all 0.64 0.00 0.16 0.65 98.55
10:30:01 AM all 0.79 0.00 0.19 0.76 98.26
10:40:01 AM all 0.70 0.00 0.15 0.43 98.72
10:50:01 AM all 0.62 0.00 0.13 0.12 99.13
11:00:01 AM all 0.87 0.00 0.18 0.86 98.09
11:10:01 AM all 0.88 0.00 0.29 1.04 97.79
11:20:01 AM all 0.81 0.00 0.28 0.94 97.96
11:30:01 AM all 0.87 0.00 0.18 0.50 98.45
11:40:02 AM all 0.66 0.00 0.14 0.32 98.88
11:50:01 AM all 0.78 0.00 0.66 0.75 97.81
Average: all 0.69 0.00 0.17 0.53 98.61
檢視核心引數,發現Memlock還是最低的預設值32,這個時候可以嘗試修改memlock
oracle soft memlock unlimited
oracle hard memlock unlimited
檢視核心中配置了Hugepage,但是實際來看,還是沒有使用到。
$ cat /proc/meminfo | grep -i page
PageTables: 387504 kB
HugePages_Total: 5121
HugePages_Free: 5121
Hugepagesize: 2048 kB
可以使用Oracle提供的指令碼來檢視Hugepage的推薦配置。
$ ./hugepage_setting.sh
Recommended setting: vm.nr_hugepages = 3075
系統級的檢查大體就是這些,我們來看看資料庫級的情況
檢視了session總數載50個左右,還是使用率不高,歸檔一兩個小時切一次,資料庫層面沒有發現任何的阻塞和鎖等待。
同時檢視資料庫的負載,都是一個很低的值。
這個時候發現有很多的歷史日誌,
但是在部分日誌目錄下存在大量日誌檔案,ls不可用
比如在adump目錄下,使用ls的時候都會出錯。
[/adump]$ ll *.aud|wc -l
bash: /bin/ls: Argument list too long
0
原來下面有不少的檔案,但是都是好幾年前的了。
$ ll |wc -l
32468
其它幾個目錄下也都有類似的問題,所以這類問題也是一個因素,可以根據條件進行過濾,刪除掉很早的日誌檔案。
所以綜上所述,整體的分析結論如下:
資料庫的硬體資源比較舊,系統是RHEL4,CPU資源相對比較緊俏
系統的負載不高,但是有swap的爭用,可以透過調整memlock進行改進
資料庫hugepage沒有生效,配置large page或者Hugepage
資料庫級session使用率不高,資料庫負載也不高。沒有發現相關的鎖等待,資料庫級沒有發現明顯問題
在日誌目錄中發現了大量的歷史日誌,可以根據條件進行刪減。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-1758151/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 某些代理伺服器速度較慢的原因伺服器
- SAP系統執行慢的原因分析
- mysql伺服器查詢慢原因分析與解決方法小結MySql伺服器
- 境外伺服器訪問速度慢的原因伺服器
- 深圳市恆訊科技分析:導致海外伺服器下載慢的原因伺服器
- 排序sql升級5.6變慢原因分析排序SQL
- 伺服器租用使用時網速慢的原因有哪些?伺服器
- 網站速度慢,網站速度慢,網站速度慢的幾種原因分析網站
- 搬瓦工香港VPS主機變慢的原因分析
- Windows變慢原因分析及解決方法(轉)Windows
- truncate 比 delete 慢的原因。delete
- 如何使用效能分析工具定位SQL執行慢的原因?SQL
- MySQL information_schema.columns表查詢慢原因分析MySqlORM
- Mac 下 Docker 執行較慢的原因分析及個人見解MacDocker
- 資料庫——慢sql的原因資料庫SQL
- 總結mysql伺服器查詢慢原因與解決方法MySql伺服器
- 資料庫查詢慢的原因資料庫
- 資料刪除慢的原因排查
- win伺服器系統程式原因分析伺服器
- 記一次開啟資料庫慢原因分析過程資料庫
- mysql 連線超慢的一個原因MySql
- 伺服器程式異常的原因分析(第二篇)伺服器
- 盤點MySQL慢查詢的12個原因MySql
- 解析智慧手機會變慢的真正原因
- 一次通過DB_LINK抽取資料過慢原因分析
- HTTP速度慢是什麼原因?HTTP
- GC耗時高,原因竟是服務流量小?GC
- JAVA GC日誌分析JavaGC
- jvm系列:Java GC 分析JVMJavaGC
- 資料庫伺服器CPU不能全部利用原因分析資料庫伺服器
- ADSL網速變慢的原因如何解決
- 恆訊科技分析美國伺服器受青睞的三個原因伺服器
- 網站開啟慢什麼原因呢?網站
- linux伺服器平均負載上100,原因分析Linux伺服器負載
- jvm系列(九):Java GC 分析JVMJavaGC
- 網站開啟緩慢或打不開的原因網站
- 拖慢系統啟動的8個原因[上](轉)
- 拖慢系統啟動的8個原因[下](轉)