การเข้าถึงระบบไฟล์ช้า


10

ฉันพยายามวินิจฉัยปัญหาระบบไฟล์ช้าบนเซิร์ฟเวอร์ที่ฉันดูแล มันค่อนข้างต่อเนื่องมาระยะหนึ่งแล้วและฉันก็หมดความคิดในสิ่งที่ฉันสามารถลอง นี่คือความหนาของมัน

เซิร์ฟเวอร์ตัวเองเป็น Dell Poweredge T310 มีฮาร์ดไดรฟ์ SAS อยู่ 4 ตัวกำหนดค่าไว้ที่ RAID5 และใช้งาน Citrix XenServer 5.6 VM คือการติดตั้ง Debian 5.0.6 เก่า (ค่อนข้าง) มันให้ 4 คอร์และ RAM 4Gb มันมี 3 เล่ม ปริมาณ 10Gb (ext3) สำหรับระบบ, 980Gb ปริมาณ (xfs) สำหรับข้อมูล (~ 94% เต็ม) และอีก 200Gb ปริมาณ (xfs) สำหรับข้อมูล (เต็ม ~ 13%)

ตอนนี้นี่คือสิ่งที่แปลก การอ่าน / เขียนการเข้าถึงไดรฟ์ 980Gb ช้ามาก ฉันอาจได้รับ 5Mb / s จากนั้นถ้าฉันโชคดี ตอนแรกฉันคิดว่ามันเป็นการเข้าถึงดิสก์จริง ๆ ในระบบหรือในระดับไฮเปอร์ไวเซอร์ แต่ปกครองโดยสิ้นเชิงเช่นเดียวกับ VMs อื่น ๆ บนโฮสต์เดียวกันที่ทำงานได้อย่างสมบูรณ์แบบดี ดังนั้นฉันจึงเริ่มกำหนดเป้าหมาย VM นี้โดยเฉพาะ ฉันเริ่มคิดว่ามันเป็น XFS แต่เพื่อพิสูจน์ว่าฉันจะไม่พยายามเปลี่ยนระบบไฟล์ในไดรฟ์ 980Gb ด้วยปีและหลายพันล้านปีของไฟล์ในนั้น ดังนั้นฉันจึงจัดเตรียมไดรฟ์ 200Gb และทำการทดสอบการอ่าน / เขียน (โดยทั่วไป dd) และได้รับสองร้อย Mb / sr / w การเข้าถึงที่ดี ดังนั้นมันจึงตัด VM, ฮาร์ดแวร์และประเภทระบบไฟล์ออก

นอกจากนี้ยังมีสิ่งต่างๆมากมายใน /var/log/kern.log; (ขออภัยนี่ค่อนข้างยาว)

Sep  4 10:16:59 uriel kernel: [32571790.564689] httpd: page allocation failure. order:5, mode:0x4020
Sep  4 10:16:59 uriel kernel: [32571790.564693] Pid: 7318, comm: httpd Not tainted 2.6.32-4-686-bigmem #1
Sep  4 10:16:59 uriel kernel: [32571790.564696] Call Trace:
Sep  4 10:16:59 uriel kernel: [32571790.564705]  [<c1092a4d>] ? __alloc_pages_nodemask+0x476/0x4e0
Sep  4 10:16:59 uriel kernel: [32571790.564711]  [<c1092ac3>] ? __get_free_pages+0xc/0x17
Sep  4 10:16:59 uriel kernel: [32571790.564716]  [<c10b632e>] ? __kmalloc+0x30/0x128
Sep  4 10:16:59 uriel kernel: [32571790.564722]  [<c11dd774>] ? pskb_expand_head+0x4f/0x157
Sep  4 10:16:59 uriel kernel: [32571790.564727]  [<c11ddbbf>] ? __pskb_pull_tail+0x41/0x1fb
Sep  4 10:16:59 uriel kernel: [32571790.564732]  [<c11e4882>] ? dev_queue_xmit+0xe4/0x38e
Sep  4 10:16:59 uriel kernel: [32571790.564738]  [<c1205902>] ? ip_finish_output+0x0/0x5c
Sep  4 10:16:59 uriel kernel: [32571790.564742]  [<c12058c7>] ? ip_finish_output2+0x187/0x1c2
Sep  4 10:16:59 uriel kernel: [32571790.564747]  [<c1204dc8>] ? ip_local_out+0x15/0x17
Sep  4 10:16:59 uriel kernel: [32571790.564751]  [<c12055a9>] ? ip_queue_xmit+0x31e/0x379
Sep  4 10:16:59 uriel kernel: [32571790.564758]  [<c1279a90>] ? _spin_lock_bh+0x8/0x1e
Sep  4 10:16:59 uriel kernel: [32571790.564767]  [<eda15a8d>] ? __nf_ct_refresh_acct+0x66/0xa4 [nf_conntrack]
Sep  4 10:16:59 uriel kernel: [32571790.564773]  [<c103bf42>] ? _local_bh_enable_ip+0x16/0x6e
Sep  4 10:16:59 uriel kernel: [32571790.564779]  [<c1214593>] ? tcp_transmit_skb+0x595/0x5cc
Sep  4 10:16:59 uriel kernel: [32571790.564785]  [<c1005c4f>] ? xen_restore_fl_direct_end+0x0/0x1
Sep  4 10:16:59 uriel kernel: [32571790.564791]  [<c12165ea>] ? tcp_write_xmit+0x7a3/0x874
Sep  4 10:16:59 uriel kernel: [32571790.564796]  [<c121203a>] ? tcp_ack+0x1611/0x1802
Sep  4 10:16:59 uriel kernel: [32571790.564801]  [<c10055ec>] ? xen_force_evtchn_callback+0xc/0x10
Sep  4 10:16:59 uriel kernel: [32571790.564806]  [<c121392f>] ? tcp_established_options+0x1d/0x8b
Sep  4 10:16:59 uriel kernel: [32571790.564811]  [<c1213be4>] ? tcp_current_mss+0x38/0x53
Sep  4 10:16:59 uriel kernel: [32571790.564816]  [<c1216701>] ? __tcp_push_pending_frames+0x1e/0x50
Sep  4 10:16:59 uriel kernel: [32571790.564821]  [<c1212246>] ? tcp_data_snd_check+0x1b/0xd2
Sep  4 10:16:59 uriel kernel: [32571790.564825]  [<c1212de3>] ? tcp_rcv_established+0x5d0/0x626
Sep  4 10:16:59 uriel kernel: [32571790.564831]  [<c121902c>] ? tcp_v4_do_rcv+0x15f/0x2cf
Sep  4 10:16:59 uriel kernel: [32571790.564835]  [<c1219561>] ? tcp_v4_rcv+0x3c5/0x5c0
Sep  4 10:16:59 uriel kernel: [32571790.564841]  [<c120197e>] ? ip_local_deliver_finish+0x10c/0x18c
Sep  4 10:16:59 uriel kernel: [32571790.564846]  [<c12015a4>] ? ip_rcv_finish+0x2c4/0x2d8
Sep  4 10:16:59 uriel kernel: [32571790.564852]  [<c11e3b71>] ? netif_receive_skb+0x3bb/0x3d6
Sep  4 10:16:59 uriel kernel: [32571790.564864]  [<ed823efc>] ? xennet_poll+0x9b8/0xafc [xen_netfront]
Sep  4 10:16:59 uriel kernel: [32571790.564869]  [<c11e40ee>] ? net_rx_action+0x96/0x194
Sep  4 10:16:59 uriel kernel: [32571790.564874]  [<c103bd4c>] ? __do_softirq+0xaa/0x151
Sep  4 10:16:59 uriel kernel: [32571790.564878]  [<c103be24>] ? do_softirq+0x31/0x3c
Sep  4 10:16:59 uriel kernel: [32571790.564883]  [<c103befa>] ? irq_exit+0x26/0x58
Sep  4 10:16:59 uriel kernel: [32571790.564890]  [<c118ff9f>] ? xen_evtchn_do_upcall+0x12c/0x13e
Sep  4 10:16:59 uriel kernel: [32571790.564896]  [<c1008c3f>] ? xen_do_upcall+0x7/0xc
Sep  4 10:16:59 uriel kernel: [32571790.564899] Mem-Info:
Sep  4 10:16:59 uriel kernel: [32571790.564902] DMA per-cpu:
Sep  4 10:16:59 uriel kernel: [32571790.564905] CPU    0: hi:    0, btch:   1 usd:   0
Sep  4 10:16:59 uriel kernel: [32571790.564908] CPU    1: hi:    0, btch:   1 usd:   0
Sep  4 10:16:59 uriel kernel: [32571790.564911] CPU    2: hi:    0, btch:   1 usd:   0
Sep  4 10:16:59 uriel kernel: [32571790.564914] CPU    3: hi:    0, btch:   1 usd:   0
Sep  4 10:16:59 uriel kernel: [32571790.564916] Normal per-cpu:
Sep  4 10:16:59 uriel kernel: [32571790.564919] CPU    0: hi:  186, btch:  31 usd: 175
Sep  4 10:16:59 uriel kernel: [32571790.564922] CPU    1: hi:  186, btch:  31 usd: 165
Sep  4 10:16:59 uriel kernel: [32571790.564925] CPU    2: hi:  186, btch:  31 usd:  30
Sep  4 10:16:59 uriel kernel: [32571790.564928] CPU    3: hi:  186, btch:  31 usd: 140
Sep  4 10:16:59 uriel kernel: [32571790.564931] HighMem per-cpu:
Sep  4 10:16:59 uriel kernel: [32571790.564933] CPU    0: hi:  186, btch:  31 usd: 159
Sep  4 10:16:59 uriel kernel: [32571790.564936] CPU    1: hi:  186, btch:  31 usd:  22
Sep  4 10:16:59 uriel kernel: [32571790.564939] CPU    2: hi:  186, btch:  31 usd:  24
Sep  4 10:16:59 uriel kernel: [32571790.564942] CPU    3: hi:  186, btch:  31 usd:  13
Sep  4 10:16:59 uriel kernel: [32571790.564947] active_anon:485974 inactive_anon:121138 isolated_anon:0
Sep  4 10:16:59 uriel kernel: [32571790.564948]  active_file:75215 inactive_file:79510 isolated_file:0
Sep  4 10:16:59 uriel kernel: [32571790.564949]  unevictable:0 dirty:516 writeback:15 unstable:0
Sep  4 10:16:59 uriel kernel: [32571790.564950]  free:230770 slab_reclaimable:36661 slab_unreclaimable:21249
Sep  4 10:16:59 uriel kernel: [32571790.564952]  mapped:20016 shmem:29450 pagetables:5600 bounce:0
Sep  4 10:16:59 uriel kernel: [32571790.564958] DMA free:2884kB min:72kB low:88kB high:108kB active_anon:0kB inactive_anon:0kB active_file:5692kB inactive_file:724kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15872kB mlocked:0kB dirty:8kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:5112kB slab_unreclaimable:156kB kernel_stack:56kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
Sep  4 10:16:59 uriel kernel: [32571790.564964] lowmem_reserve[]: 0 698 4143 4143
Sep  4 10:16:59 uriel kernel: [32571790.564977] Normal free:143468kB min:3344kB low:4180kB high:5016kB active_anon:56kB inactive_anon:2068kB active_file:131812kB inactive_file:131728kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:715256kB mlocked:0kB dirty:156kB writeback:0kB mapped:308kB shmem:4kB slab_reclaimable:141532kB slab_unreclaimable:84840kB kernel_stack:1928kB pagetables:22400kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
Sep  4 10:16:59 uriel kernel: [32571790.564983] lowmem_reserve[]: 0 0 27559 27559
Sep  4 10:16:59 uriel kernel: [32571790.564995] HighMem free:776728kB min:512kB low:4636kB high:8760kB active_anon:1943840kB inactive_anon:482484kB active_file:163356kB inactive_file:185588kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:3527556kB mlocked:0kB dirty:1900kB writeback:60kB mapped:79756kB shmem:117796kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
Sep  4 10:16:59 uriel kernel: [32571790.565001] lowmem_reserve[]: 0 0 0 0
Sep  4 10:16:59 uriel kernel: [32571790.565011] DMA: 385*4kB 16*8kB 3*16kB 9*32kB 6*64kB 2*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 2900kB
Sep  4 10:16:59 uriel kernel: [32571790.565032] Normal: 21505*4kB 6508*8kB 273*16kB 24*32kB 3*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 143412kB
Sep  4 10:16:59 uriel kernel: [32571790.565054] HighMem: 949*4kB 8859*8kB 7063*16kB 6186*32kB 4631*64kB 727*128kB 6*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 776604kB
Sep  4 10:16:59 uriel kernel: [32571790.565076] 198980 total pagecache pages
Sep  4 10:16:59 uriel kernel: [32571790.565079] 14850 pages in swap cache
Sep  4 10:16:59 uriel kernel: [32571790.565082] Swap cache stats: add 2556273, delete 2541423, find 82961339/83153719
Sep  4 10:16:59 uriel kernel: [32571790.565085] Free swap  = 250592kB
Sep  4 10:16:59 uriel kernel: [32571790.565087] Total swap = 385520kB
Sep  4 10:16:59 uriel kernel: [32571790.575454] 1073152 pages RAM
Sep  4 10:16:59 uriel kernel: [32571790.575458] 888834 pages HighMem
Sep  4 10:16:59 uriel kernel: [32571790.575461] 11344 pages reserved
Sep  4 10:16:59 uriel kernel: [32571790.575463] 1090481 pages shared
Sep  4 10:16:59 uriel kernel: [32571790.575465] 737188 pages non-shared

ตอนนี้ฉันไม่รู้ว่าสิ่งนี้หมายความว่าอย่างไร มีหน่วยความจำฟรีมากมาย

             total       used       free     shared    buffers     cached
Mem:       4247232    3455904     791328          0       5348     736412
-/+ buffers/cache:    2714144    1533088
Swap:       385520     131004     254516

แม้ว่าตอนนี้ฉันจะเห็นการแลกเปลี่ยนมีขนาดค่อนข้างต่ำ แต่นั่นจะสำคัญไหม

ฉันเริ่มคิดถึงการแตกแฟรกเมนต์หรือการใช้ inode บนพาร์ติชันขนาดใหญ่นั้น แต่ fsck ล่าสุดที่มันแสดงให้เห็นนั้นเหมือนกับ 0.5% ที่กระจัดกระจาย สิ่งใดทำให้ฉันมีการใช้ inode แต่จะมีผลกระทบเท่าใดกับตาราง inode ขนาดใหญ่หรือระบบไฟล์ TOC

ฉันชอบที่จะได้ยินความคิดเห็นของผู้คนในเรื่องนี้ มันทำให้ฉันกระโถน!

เอาต์พุต df -h;

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda1            9.5G  6.6G  2.4G  74% /
tmpfs                 2.1G     0  2.1G   0% /lib/init/rw
udev                   10M  520K  9.5M   6% /dev
tmpfs                 2.1G     0  2.1G   0% /dev/shm
/dev/xvdb             980G  921G   59G  94% /data

เอาต์พุต xfs_db;

# xfs_db -r -c frag /dev/xvdb
actual 15687263, ideal 15385050, fragmentation factor 1.93%

นี่เป็นเดเบียน 32 บิตหรือไม่
Janne Pikkarainen

ใช่แล้ว. ใช้เคอร์เนล "bigmem"
dannosaur

อะไรคือผลลัพธ์ของdf -h?
ewwhite

ใช่ไปข้างหน้าและตรวจสอบปัจจัยการกระจายตัวของ/dev/xvdbระบบแฟ้ม
ewwhite

การโพสต์การแก้ไขด้วยเอาต์พุต xfs_db 1.93% ไม่เลวอย่างนั้นเหรอ?
dannosaur

คำตอบ:


4

มันอาจเป็นระบบไฟล์ XFS ในกรณีนี้ คุณอาจมีปัญหาการกระจายตัวอย่างหนักเช่นเดียวกับการชะลอตัวที่มาพร้อมกับระบบไฟล์เกือบเต็ม คุณสามารถได้รับประโยชน์จากพื้นที่มากขึ้นในทั้งสองกรณี

โปรดตรวจสอบการแตกแฟรกเมนต์ของระบบไฟล์ XFS คุณสามารถทำได้ด้วยxfs_dbคำสั่ง /dev/sdb1ตัวอย่างเช่นหากระบบไฟล์เป็นเช่นนั้นคำสั่งของคุณจะมีลักษณะ:

xfs_db -r -c frag /dev/sdb1

ที่จะส่งออกเป็นปัจจัยการกระจายตัว:

actual 66524, ideal 55966, fragmentation factor 15.87%

คุณสามารถเรียกใช้ยูทิลิตีการจัดเรียงข้อมูลออนไลน์xfs_fsr -vในscreenเซสชันเพื่อพยายามแก้ไขสิ่งนี้ โดยดีฟอลต์คำสั่งจะรันเป็นเวลา 2 ชั่วโมงหรือ TEN ส่งผ่านไปยังระบบไฟล์ คุณอาจต้องเรียกใช้หลายครั้ง ตรวจสอบปัจจัยการกระจายตัวระหว่างการทำงาน



0

มีสองเครื่องมือที่คุณสามารถใช้เพื่อดูสิ่งที่เกิดขึ้นบนเซิร์ฟเวอร์ของคุณ iostatและiotopจะช่วยคุณค้นหาปัญหา

หากคุณต้องการที่จะจัดลำดับความสำคัญสองมอบหมายว่ากระบวนการที่แตกต่างกันที่มีต่อคุณเซิร์ฟเวอร์ในความสัมพันธ์กับ IO คุณสามารถใช้ionice อาจเพียงพอที่จะแก้ไขปัญหาของคุณ แต่อาจเป็นการแก้ไขชั่วคราว คุณอาจต้องการค้นหาที่เก็บข้อมูลอื่นหรือการจัดสรรทรัพยากรสำหรับเซิร์ฟเวอร์ของคุณ

iostat
Iostat สามารถใช้เพื่อระบุอุปกรณ์เก็บข้อมูล / หน่วยความจำที่ทำให้เซิร์ฟเวอร์ของคุณช้าลง มันมีบางสถิติที่ดี iowait เมื่อคุณรู้ว่าอุปกรณ์ใดที่ทำให้สิ่งต่าง ๆ ช้าลงคุณอาจมีความคิดที่ดีขึ้นว่าจะให้ความสนใจกับที่ไหน

$ iostat
Linux 3.2.0-30-generic (aaron-laptop) 11/09/2012 _x86_64_ (4 CPU)

avg-cpu:% ผู้ใช้% ดีมากระบบ% iowait% ขโมย% ว่าง
           5,83 0,07 3,00 1,81 0,00 89,29

อุปกรณ์: tps kB_read / s kB_wrtn / s kB_read kB_wrtn
sda 20,64 231,97 76,26 1290702 424315

ไอโซโทป
ที่ยอดเยี่ยมสำหรับการระบุว่ากระบวนการใดที่รอให้ IO ทำงานได้นานที่สุดหรือเป็นไอโอที่เข้มข้นที่สุด

อ่านดิสก์รวม: 0.00 B / s | รวมดิสก์เขียน: 9.89 K / s
  TID PRIO USER DISK อ่านการเขียนดิสก์ SWAPIN IO> คำสั่ง          
  349 เป็น / 3 รูต 0.00 B / s 1,012.49 B / s 0.00% 1.79% [jbd2 / sda3-8]
    1 be / 4 root 0.00 B / s 0.00 B / s 0.00% 0.00% init
    2 be / 4 root 0.00 B / s 0.00 B / s 0.00% 0.00% [kthreadd]
    3 be / 4 root 0.00 B / s 0.00 B / s 0.00% 0.00% [ksoftirqd / 0]

ionice

 ionice - ความช่วยเหลือ

ionice - กำหนดหรือรับคลาสการกำหนดตารางเวลากระบวนการและลำดับความสำคัญ

การใช้งาน:
  ionice [OPTION] -p PID [PID ... ]
  ionice [OPTION] คำสั่ง

ตัวเลือก:
  -c, - ระดับชั้นเรียนชื่อหรือหมายเลข
                           0: ไม่มี, 1: เรียลไทม์, 2: สุดยอดความพยายาม, 3: ไม่ได้ใช้งาน
  -n, --classdata ข้อมูลคลาสการกำหนดตารางเวลา
                           0-7 สำหรับเรียลไทม์และคลาสที่ดีที่สุด
  -p, --pid = PID ดูหรือแก้ไขกระบวนการที่กำลังทำงานอยู่
  -t, - ละเลยความล้มเหลว
  -V, - ข้อมูลเวอร์ชั่นเอาท์พุทรุ่นและออก
  -h, - ช่วยแสดงความช่วยเหลือและออกจากนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.