banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Tối ưu RAM khi chạy JVM  XML
  [Question]   Tối ưu RAM khi chạy JVM 27/09/2006 05:37:52 (+0700) | #1 | 26025
[Avatar]
tiemtran
Member

[Minus]    0    [Plus]
Joined: 26/09/2006 18:32:48
Messages: 6
Offline
[Profile] [PM] [Email]
Hi các bác, em là newbie
Em có cài đặt một hệ thống 2 máy chủ chạy hệ điều hành RH EL 3 và có các ứng dụng sau:
- Máy chủ 01: chỉ chạy Apache
- Máy chủ 02: chạy Tomcat, PostgreSQL.
- Apache ở máy chủ 01 kết nối đến Tomcat ở máy chủ 02 thông qua Module mod_jk.so.
Cấu hình máy chủ không đến nỗi nào:
Máy chủ 01: 04 CPUs Intel Xeon 2.8GHz
01GB RAM
03 ổ cứng 36.4GB
Máy chủ 02: 04 CPUs Intel Xeon 2.8GHz
1GB RAM
03 ổ cứng 72GB
Gần đây khi kiểm tra tài nguyên RAM thì thấy một tình trạng sau:
- RAM của cả 2 máy chủ trên đều là 1GB. Khi kiểm tra bằng lệnh "top" thì nó báo chỉ còn dư khoảng 19-20MB RAM. Lúc nào cũng trong tình trạng sẵn sàng hết MEM. sad(
Các bác có biết nguyên nhân tại sao như vậy không ạ?
Em tìm mãi không ra nguyên nhân của tình trạng trên. Có phải do thiếu RAM không các bác ơi ơi ơi ơi
Bác nào có kinh nghiệm xin chỉ giáo giúp em để em khắc phục tình trạng trên chứ website của em nó chậm như rùa. Hic
Cứu em cứu em.
[Up] [Print Copy]
  [Question]   Re: Tối ưu RAM khi chạy JVM 27/09/2006 16:41:01 (+0700) | #2 | 26096
vnpenguin
Elite Member

[Minus]    0    [Plus]
Joined: 15/02/2004 22:51:33
Messages: 82
Location: VNOSS
Offline
[Profile] [PM] [WWW] [Yahoo!]
http://forum.vnoss.org/viewtopic.php?id=3565
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 27/09/2006 18:43:36 (+0700) | #3 | 26101
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

tiemtran wrote:
Hi các bác, em là newbie
Em có cài đặt một hệ thống 2 máy chủ chạy hệ điều hành RH EL 3 và có các ứng dụng sau:
- Máy chủ 01: chỉ chạy Apache
- Máy chủ 02: chạy Tomcat, PostgreSQL.
- Apache ở máy chủ 01 kết nối đến Tomcat ở máy chủ 02 thông qua Module mod_jk.so.
Cấu hình máy chủ không đến nỗi nào:
Máy chủ 01: 04 CPUs Intel Xeon 2.8GHz
01GB RAM
03 ổ cứng 36.4GB
Máy chủ 02: 04 CPUs Intel Xeon 2.8GHz
1GB RAM
03 ổ cứng 72GB
Gần đây khi kiểm tra tài nguyên RAM thì thấy một tình trạng sau:
- RAM của cả 2 máy chủ trên đều là 1GB. Khi kiểm tra bằng lệnh "top" thì nó báo chỉ còn dư khoảng 19-20MB RAM. Lúc nào cũng trong tình trạng sẵn sàng hết MEM. sad(
Các bác có biết nguyên nhân tại sao như vậy không ạ?
Em tìm mãi không ra nguyên nhân của tình trạng trên. Có phải do thiếu RAM không các bác ơi ơi ơi ơi
Bác nào có kinh nghiệm xin chỉ giáo giúp em để em khắc phục tình trạng trên chứ website của em nó chậm như rùa. Hic
Cứu em cứu em. 


Cái này không hẳn là máy chủ "sắp" hết memory đâu. Bồ thử gõ top, rồi gõ M (để liệt kê process theo số lượng memory được dùng). Sau đó xem mấy cái process chiếm nhiều memory nhất là những cái nào và chúng chiếm bao nhiêu rồi post lên đây.

RedHat Linux điều tác memory khá cực đoan. Memory thường "bị" kernel lấy sẵn và để đó. Đến khi cần dùng thì nó cung cấp ngay.

Bồ chạy lệnh top và post 5 dóng đầu của kết quả lên đây xem?

Website chậm có thể có nhiều nguyên nhân chớ không phải JVM (như tiêu đề bồ đưa ra) đâu.
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 28/09/2006 23:35:42 (+0700) | #4 | 26333
[Avatar]
tiemtran
Member

[Minus]    0    [Plus]
Joined: 26/09/2006 18:32:48
Messages: 6
Offline
[Profile] [PM] [Email]
Vậy ạ?Em đã thử gõ lệnh top và gõ M như bác nói rùi. Nó vẫn báo thế. Và các process chiếm nhiều RAM nhất vẫn là java, postgres và httpd.
Bác có cái tool nào để quản lý RAM hiệu quả tránh bị kernel lấy mất không?
Bác tư vấn giúp em với.
Cảm ơn các bác nhìu nhìu.
regards,
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 28/09/2006 23:46:54 (+0700) | #5 | 26340
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

tiemtran wrote:
Vậy ạ?Em đã thử gõ lệnh top và gõ M như bác nói rùi. Nó vẫn báo thế. Và các process chiếm nhiều RAM nhất vẫn là java, postgres và httpd.
Bác có cái tool nào để quản lý RAM hiệu quả tránh bị kernel lấy mất không?
Bác tư vấn giúp em với.
Cảm ơn các bác nhìu nhìu.
regards, 


"Bảo thế" là bảo thế nào? Tớ đề nghị đến những 2 lần: "post lên đây" nhưng bồ không làm chuyện đó mà lại đòi tools thì... bó tay.

Bồ có biết lý do tại sao kernel lấy RAM không? Bởi vì nó là "đứa"phân phát memory cho các ứng dụng. Nếu không cho nó lấy thì nó dùng cái gì để phân phát?

Tớ đề nghị bồ post lên thông tin là để giúp bồ cách điều chỉnh kernel parameters cho thích hợp hơn và đây là cách hay nhất. Ngay cả có cái tool nào đó, bồ dựa trên cái gì để "quản lý" memory?
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 29/09/2006 05:52:57 (+0700) | #6 | 26432
[Avatar]
tiemtran
Member

[Minus]    0    [Plus]
Joined: 26/09/2006 18:32:48
Messages: 6
Offline
[Profile] [PM] [Email]
Em xin lỗi bác vì hiện tại em cũng chưa biết post cái ảnh lên đây thế nào. Em là newbie mà.
Có phải upload ảnh lên một trang khác rồi gõ link vào thẻ img không bác?
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 29/09/2006 12:28:16 (+0700) | #7 | 26505
subnetwork
Member

[Minus]    0    [Plus]
Joined: 05/09/2004 06:08:09
Messages: 1666
Offline
[Profile] [PM] [WWW] [Yahoo!]

tiemtran wrote:
Em xin lỗi bác vì hiện tại em cũng chưa biết post cái ảnh lên đây thế nào. Em là newbie mà.
Có phải upload ảnh lên một trang khác rồi gõ link vào thẻ img không bác?
 


# top
Copy và Paste 5 dòng đầu và post lên đây .

Thân
Quản lý máy chủ, cài đặt, tư vấn, thiết kế, bảo mật hệ thống máy chủ dùng *nix
http://chamsocmaychu.com
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 30/09/2006 02:46:39 (+0700) | #8 | 26606
[Avatar]
tiemtran
Member

[Minus]    0    [Plus]
Joined: 26/09/2006 18:32:48
Messages: 6
Offline
[Profile] [PM] [Email]
Lệnh top của máy databaseserver: Đã gõ M

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
1808 root 25 0 221M 218M 2464 S 0.0 21.7 20:46 3 java
30049 postgres 25 0 5304 5304 4512 S 0.0 0.5 0:00 2 postmaster
31063 postgres 25 0 5304 5304 4512 S 0.0 0.5 0:00 1 postmaster
26010 postgres 25 0 5292 5292 4504 S 0.0 0.5 0:00 0 postmaster
30047 postgres 25 0 5288 5288 4504 S 0.0 0.5 0:00 1 postmaster
19767 postgres 15 0 3964 3964 3016 S 0.0 0.3 0:00 0 postmaster
2011 xfs 15 0 2604 2604 228 S 0.0 0.2 0:00 1 xfs
1956 mysql 16 0 2380 2380 1744 S 0.0 0.2 0:00 3 mysqld

Lệnh top của máy webserver: Đã gõ M

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
24674 apache 15 0 11716 11M 7544 S 0.0 1.1 0:00 1 httpd
24649 apache 15 0 11688 11M 7548 S 0.0 1.1 0:00 3 httpd
24670 apache 15 0 11684 11M 7548 S 0.0 1.1 0:00 3 httpd
24653 apache 15 0 10812 10M 7256 S 0.0 1.0 0:00 1 httpd
24641 apache 15 0 10800 10M 7256 S 0.0 1.0 0:00 3 httpd

Đây thưa bác, bác cứu em với. Lúc em chụp này là máy DB nó còn có 19MB free thôi, máy web là còn khoảng 80MB free.
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 30/09/2006 03:11:24 (+0700) | #9 | 26609
[Avatar]
conmale
Administrator

Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
[Profile] [PM]

tiemtran wrote:
Lệnh top của máy databaseserver: Đã gõ M

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
1808 root 25 0 221M 218M 2464 S 0.0 21.7 20:46 3 java
30049 postgres 25 0 5304 5304 4512 S 0.0 0.5 0:00 2 postmaster
31063 postgres 25 0 5304 5304 4512 S 0.0 0.5 0:00 1 postmaster
26010 postgres 25 0 5292 5292 4504 S 0.0 0.5 0:00 0 postmaster
30047 postgres 25 0 5288 5288 4504 S 0.0 0.5 0:00 1 postmaster
19767 postgres 15 0 3964 3964 3016 S 0.0 0.3 0:00 0 postmaster
2011 xfs 15 0 2604 2604 228 S 0.0 0.2 0:00 1 xfs
1956 mysql 16 0 2380 2380 1744 S 0.0 0.2 0:00 3 mysqld

Lệnh top của máy webserver: Đã gõ M

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
24674 apache 15 0 11716 11M 7544 S 0.0 1.1 0:00 1 httpd
24649 apache 15 0 11688 11M 7548 S 0.0 1.1 0:00 3 httpd
24670 apache 15 0 11684 11M 7548 S 0.0 1.1 0:00 3 httpd
24653 apache 15 0 10812 10M 7256 S 0.0 1.0 0:00 1 httpd
24641 apache 15 0 10800 10M 7256 S 0.0 1.0 0:00 3 httpd

Đây thưa bác, bác cứu em với. Lúc em chụp này là máy DB nó còn có 19MB free thôi, máy web là còn khoảng 80MB free. 


Cần thêm đoạn này nữa:

top - xxsmiliexsmiliex up xx days, xx min, xx user, load average: xx, xx, xx
Tasks: xx total, xx running, xx sleeping, xx stopped, xx zombie
Cpu(s): xx% us, xx% sy, xx% ni, xx% id, xx% wa, xx% hi, xx% si
Mem: xxk total, xxk used, xxk free, xxk buffers
Swap: xxk total, xxk used, xxk free, xxk cached
What bringing us together is stronger than what pulling us apart.
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 30/09/2006 04:17:30 (+0700) | #10 | 26633
nbthanh
HVA Friend

Joined: 21/12/2001 14:51:51
Messages: 429
Offline
[Profile] [PM]
Nếu không có nhu cầu gì đặc biệt thì nên move Tomcat qua chung server 1 với Apache. Vì:

- 1Gb RAM thì vẫn còn khá ít cho các ứng dụng Java hạng nặng và các DB bự. Để chung Java với Postgresql với nhau mà ít ram thế thì ngó bộ không ổn.
- DB thì có connection pool nên quá trình connect db từ máy 1 sang máy 2 sẽ nhẹ hơn nhiều so với khi mod_jk tạo socket connection mới từ máy 1 sang máy 2.
- 1 mình Apache nếu chỉ để forward request sang Tomcat thì quá phí, 1 mình httpd không thể ngốn nhiều RAM đến như vậy nếu như bạn cấu hình đúng.

Và:
- kernel báo còn dư 19-20Mb không có nghĩa là "hết ram", vì nếu đã "hết" thì làm gì còn dư 19-20Mb chứ smilie

- site bạn chậm chắc gì đã do thiếu RAM, bạn xác định vào đâu mà kết luận như thế?
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 30/09/2006 04:45:30 (+0700) | #11 | 26641
[Avatar]
tiemtran
Member

[Minus]    0    [Plus]
Joined: 26/09/2006 18:32:48
Messages: 6
Offline
[Profile] [PM] [Email]
Hiện trạng máy webserver của em đây:

04:40:33 up 2 days, 5:36, 4 users, load average: 0.00, 0.00, 0.00
81 processes: 80 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 0.1% 0.0% 0.2% 0.0% 0.1% 0.5% 99.0%
cpu00 0.0% 0.0% 0.0% 0.0% 0.6% 0.6% 98.8%
cpu01 0.0% 0.0% 0.4% 0.0% 0.0% 0.4% 99.2%
cpu02 0.6% 0.0% 0.2% 0.0% 0.0% 0.6% 98.6%
cpu03 0.0% 0.0% 0.2% 0.0% 0.0% 0.4% 99.4%
Mem: 1028296k av, 1007700k used, 20596k free, 0k shrd, 180472k buff
604700k actv, 4k in_d, 17500k in_c
Swap: 4096492k av, 0k used, 4096492k free 611828k cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
25089 apache 15 0 12048 11M 7700 S 0.0 1.1 0:00 3 httpd
25277 apache 15 0 11560 11M 7548 S 0.0 1.1 0:00 3 httpd
25291 apache 15 0 11552 11M 7548 S 0.0 1.1 0:00 2 httpd
25299 apache 15 0 11540 11M 7548 S 0.0 1.1 0:00 1 httpd
25272 apache 15 0 11300 11M 7548 S 0.0 1.0 0:01 3 httpd

Hiện trạng máy database của em đây:

16:28:29 up 17:12, 2 users, load average: 0.11, 0.19, 0.18
68 processes: 67 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 4.2% 0.0% 2.0% 0.0% 0.0% 0.0% 93.6%
cpu00 4.3% 0.0% 1.3% 0.0% 0.0% 0.0% 94.2%
cpu01 4.4% 0.0% 3.0% 0.0% 0.0% 0.2% 92.4%
cpu02 3.4% 0.0% 1.4% 0.0% 0.0% 0.0% 95.2%
cpu03 4.7% 0.0% 2.3% 0.0% 0.0% 0.1% 92.6%
Mem: 1028424k av, 1012064k used, 16360k free, 0k shrd, 100448k buff
643148k actv, 2160k in_d, 18844k in_c
Swap: 5959988k av, 19700k used, 5940288k free 463052k cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND
1808 root 25 0 225M 223M 4948 S 2.3 22.2 29:21 3 java
24622 postgres 25 0 5364 5364 4572 S 0.2 0.5 0:00 3 postmaster
24648 postgres 25 0 5364 5364 4572 S 0.2 0.5 0:00 1 postmaster
24684 postgres 25 0 5364 5364 4572 S 0.0 0.5 0:00 3 postmaster
22385 postgres 25 0 5356 5356 4564 S 0.0 0.5 0:00 3 postmaster

Chính là vấn đề cấu hình thằng Apache mà em đang quan tâm. Em cài mặc định thôi, chỉ thêm một số cấu hình về proxy. Trên thằng Apache đó có chạy một số website nhỏ (không đáng kể, chỉ là một số file html bình thường không có gì đặc biệt). Cấu hình Apache có gì liên quan đến việc ăn nhiều RAM không bác nbthanh?

Em cũng không rõ lắm vì nguyên nhân gì khiến website em chậm, chỉ check thấy nó báo còn ít RAM quá, website của em chạy ngay trong mạng LAN cũng đã thấy chậm rồi. Thậm chí còn báo Out Of Memory Error mặc dù em đã chỉnh lại cái biến JAVA_OPTS rồi. Hic.
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 30/09/2006 05:13:54 (+0700) | #12 | 26647
nbthanh
HVA Friend

Joined: 21/12/2001 14:51:51
Messages: 429
Offline
[Profile] [PM]

tiemtran wrote:
Em cũng không rõ lắm vì nguyên nhân gì khiến website em chậm, chỉ check thấy nó báo còn ít RAM quá, website của em chạy ngay trong mạng LAN cũng đã thấy chậm rồi. Thậm chí còn báo Out Of Memory Error mặc dù em đã chỉnh lại cái biến JAVA_OPTS rồi. Hic. 

Mặc định JVM cấp cho application của bạn 64Mb, nên nếu xảy ra lỗi out of memory thì cũng không phải là hiếm.
Bạn có thể tăng lượng RAM mà JVM dành cho Tomcat qua JAVA_OPTS, hoặc chỉnh ngay trong file startup của Tomcat (cách này tốt hơn).
Tuy nhiên tôi chưa thể góp ý gì thêm vì không biết bạn "đã chính cái biến JAVA_OPTS" đó như thế nào).
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 30/09/2006 06:47:49 (+0700) | #13 | 26657
[Avatar]
tiemtran
Member

[Minus]    0    [Plus]
Joined: 26/09/2006 18:32:48
Messages: 6
Offline
[Profile] [PM] [Email]
Em đã chỉnh thế này đây. Đây là một dòng trong file catalina.sh

JAVA_OPTS="-Xms128m -Xmx512m"
Như này đã ổn chưa bác?
[Up] [Print Copy]
  [Question]   Tối ưu RAM khi chạy JVM 30/09/2006 07:02:30 (+0700) | #14 | 26660
nbthanh
HVA Friend

Joined: 21/12/2001 14:51:51
Messages: 429
Offline
[Profile] [PM]
Như vậy thì có thể kết luận sơ bộ là server của bạn không có thiếu RAM (vì bằng chứng là lỗi báo do application của bạn chứ không phải ở nơi nào khác).
128-512Mb cho JVM là khá rộng rãi, nhất là nếu Tomcat chỉ chạy 1 mình application của bạn thì chuyện out of memory là chuyện khá lạ.

Tôi đề nghị bạn check lại application của mình xem có bị memory leak chỗ nào không? Chứ có tới 512Mb mà còn thiếu thì quả là khó hiểu. Ứng dụng phải tầm cỡ lắm thì mới dùng cho hết lượng 512Mb RAM cấp cho nó.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|