ห่างหายไปนานพอสมควรวันนี้ก็มีเกล็ดความรู้ในการเช็ค CPU ทำงานหนักเกิดจาก process ของ oracle ตัวไหนกันแน่ ( คราวนี้เราจะมาตรวจสอบผ่าน Process ของ OS กัน )

** ข้อมูลพื้นฐาน :: OS => AIX(UNIX)
 
command :: topas
 
คำสั่งแรกหลายคนอาจจะคคุ้นเคยดี มีไว้สำหรับตรวจสอบข้อมูลการทำงานของ OS ทั้ง CPU , MEMORY หรือแม้แต่ Process ต่างๆที่รันอยู่ในเวลานั้นๆ รวมไปถึง swap ก็สามารถดูได้ผ่านคำสั่งนี้ด้วย
 
 
จากภาพ CPU ทำงานโดย Application 73.9% เลยทีเดียว ด้านซ้ายล่างก็จะพบ Process ต่างๆที่ทำงานอยู่ ซึ่งส่วนมากก็จะเป็นของ Oracle ของเรานี่เองครับจำนวนโปรเซสแสดงถึงจำนวนคนใช้งานในขณะนั่นครับ  ซึ่งจำนวนโปรเซสที่เข้ามาทำงานได้นี่ก็ขึ้นอยู่กับ Parameter ที่เรากำหนดไว้ให้เข้ามาได้นั่นเอง
 
จากนั้นกด Shift + P ครับ เพื่อดูเฉพาะโปรเซสเท่านั้น
 
 
เราจะพบว่า Process ใดใช้งาน CPU ไปกี่ % จากคอลัม CPU%
และเรายังต้องดูเพิ่มในคอลัม TIME ในที่นี้หน่วยเป็นนาทีนะครับ
 
หากเราพบว่า Process ไหนใช้งาน cpu เยอะ และมี Time ที่ยาวนานมากๆ
 
ยกตัวอย่าง  จินตนาการภาพว่า process บนสุด Time : 120:00     CPU%: 15
** จะเห็นได้ว่ามันถือครอง CPU 9% มานานมากๆ แล้ว 2 ชม. แล้วถ้ามีแบบเจ้า Process นี้ 3 ตัวหละ
          = 15*3 => 45%    เยอะมั้ยหละครับท่านผู้ชม แบบนี้ server กำลังทำงานหนักหละครับ
 
ต่อไปเราจะไปตามหาผู้ทำครับ เราจะใช้ PID ไปตามหาต่อไปครับ ตาม step ด้านล่างนี้เลยครับ
 
ค้นหาผ่าน DBA View โดยเงือนไขเป็นการนำ Process ID มาใส่ครับ
SELECT
SES.OSUSER os_user,
SES.username,
SES.PROCESS PID,
SES.SID sid,
SES.SERIAL#,
SES.MACHINE,
SES.TERMINAL,
SES.PROGRAM,
SES.WAIT_CLASS,
SES.EVENT,
SQL_ADDRESS,
SQL_HASH_VALUE
FROM v$session SES , v$process p
WHERE p.addr = SES.paddr
AND p.spid IN (‘9240952′,’32309378′)
 
จากนั้นเราจะนำ SQL_ADDRESS และ SQL_HASH_VALUE
ไปตามหาคำสั่งที่รันนานๆนี้ได้ครับ จากบทความก่อนหน้าที่เคยนำเสนอไป
 
 
เห็นมั้ยครับแค่นี้เราก็รู้แล้ว ใครมันทำอะไรกิน CPU เยอะจัง แถมนานอีกต่างหาก
ก็ต้องไปหาวิธี แก้ไขปัญหาในจุดนี้ต่อไปครับ 
คำตอบนี้มีประโยชน์หรือไม่? 0 Users Found This Useful (0 Votes)