การใช้งานแคชทันตกรรมที่สูงผิดปกติ


34

ปัญหา

เครื่อง CentOS ที่มีเคอร์เนล 2.6.32 และ RAM ทางกายภาพ 128 GB ประสบปัญหาเมื่อไม่กี่วันที่ผ่านมา ผู้ดูแลระบบที่รับผิดชอบบอกฉันว่าแอปพลิเคชั่น PHP-FPM ไม่ตอบสนองต่อการร้องขอในเวลาที่เหมาะสมอีกต่อไปเนื่องจากการแลกเปลี่ยนและเมื่อเห็นfreeว่าแทบจะไม่มีหน่วยความจำเหลืออยู่เลยเขาเลือกที่จะรีบูตเครื่อง

ฉันรู้ว่าหน่วยความจำว่างอาจเป็นแนวคิดที่สับสนบน Linux และการรีบูตอาจเป็นสิ่งที่ผิดที่ต้องทำ อย่างไรก็ตามผู้ดูแลระบบดังกล่าวโทษใบสมัคร PHP (ซึ่งฉันรับผิดชอบ) และปฏิเสธที่จะตรวจสอบเพิ่มเติม

สิ่งที่ฉันสามารถรู้ได้ด้วยตัวเองคือ:

  • ก่อนการรีสตาร์ทหน่วยความจำว่าง (รวมบัฟเฟอร์และแคช) มีเพียงสองสามร้อย MB
  • ก่อนการรีสตาร์ท/proc/meminfoรายงานการใช้หน่วยความจำ Slab ประมาณ 90 GB (ใช่ GB)
  • หลังจากรีสตาร์ทหน่วยความจำว่างอยู่ที่ 119 GB ลดลงเหลือ 100 GB ภายในหนึ่งชั่วโมงเนื่องจากคนทำงาน PHP-FPM (ประมาณ 600 คน) กลับมามีชีวิตอีกครั้งโดยแต่ละคนจะแสดงระหว่าง 30 ถึง 40 MB ใน คอลัมน์ RES อยู่ด้านบน (ซึ่งเป็นวิธีนี้มาหลายเดือนแล้วและเหมาะสมอย่างยิ่งกับลักษณะของแอปพลิเคชัน PHP) ไม่มีสิ่งใดในรายการกระบวนการที่ใช้ RAM ในปริมาณที่ผิดปกติหรือสำคัญ
  • หลังจากรีสตาร์ทหน่วยความจำ Slab อยู่ที่ประมาณ 300 MB

หากได้รับการตรวจสอบระบบนับ แต่นั้นมาและที่สำคัญที่สุดหน่วยความจำ Slab จะเพิ่มขึ้นเป็นเส้นตรงด้วยอัตราประมาณ 5 GB ต่อวัน หน่วยความจำฟรีตามที่รายงานโดยfreeและ/proc/meminfoลดลงในอัตราเดียวกัน พื้นปัจจุบันมีขนาด 46 GB ตามที่slabtopส่วนใหญ่จะใช้สำหรับdentryรายการ:

หน่วยความจำฟรี:

free -m
             total       used       free     shared    buffers     cached
Mem:        129048      76435      52612          0        144       7675
-/+ buffers/cache:      68615      60432
Swap:         8191          0       8191

meminfo:

cat /proc/meminfo
MemTotal:       132145324 kB
MemFree:        53620068 kB
Buffers:          147760 kB
Cached:          8239072 kB
SwapCached:            0 kB
Active:         20300940 kB
Inactive:        6512716 kB
Active(anon):   18408460 kB
Inactive(anon):    24736 kB
Active(file):    1892480 kB
Inactive(file):  6487980 kB
Unevictable:        8608 kB
Mlocked:            8608 kB
SwapTotal:       8388600 kB
SwapFree:        8388600 kB
Dirty:             11416 kB
Writeback:             0 kB
AnonPages:      18436224 kB
Mapped:            94536 kB
Shmem:              6364 kB
Slab:           46240380 kB
SReclaimable:   44561644 kB
SUnreclaim:      1678736 kB
KernelStack:        9336 kB
PageTables:       457516 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    72364108 kB
Committed_AS:   22305444 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      480164 kB
VmallocChunk:   34290830848 kB
HardwareCorrupted:     0 kB
AnonHugePages:  12216320 kB
HugePages_Total:    2048
HugePages_Free:     2048
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:        5604 kB
DirectMap2M:     2078720 kB
DirectMap1G:    132120576 kB

Slabtop:

slabtop --once
Active / Total Objects (% used)    : 225920064 / 226193412 (99.9%)
 Active / Total Slabs (% used)      : 11556364 / 11556415 (100.0%)
 Active / Total Caches (% used)     : 110 / 194 (56.7%)
 Active / Total Size (% used)       : 43278793.73K / 43315465.42K (99.9%)
 Minimum / Average / Maximum Object : 0.02K / 0.19K / 4096.00K

  OBJS ACTIVE  USE OBJ SIZE  SLABS OBJ/SLAB CACHE SIZE NAME                   
221416340 221416039   3%    0.19K 11070817       20  44283268K dentry                 
1123443 1122739  99%    0.41K 124827        9    499308K fuse_request           
1122320 1122180  99%    0.75K 224464        5    897856K fuse_inode             
761539 754272  99%    0.20K  40081       19    160324K vm_area_struct         
437858 223259  50%    0.10K  11834       37     47336K buffer_head            
353353 347519  98%    0.05K   4589       77     18356K anon_vma_chain         
325090 324190  99%    0.06K   5510       59     22040K size-64                
146272 145422  99%    0.03K   1306      112      5224K size-32                
137625 137614  99%    1.02K  45875        3    183500K nfs_inode_cache        
128800 118407  91%    0.04K   1400       92      5600K anon_vma               
 59101  46853  79%    0.55K   8443        7     33772K radix_tree_node        
 52620  52009  98%    0.12K   1754       30      7016K size-128               
 19359  19253  99%    0.14K    717       27      2868K sysfs_dir_cache        
 10240   7746  75%    0.19K    512       20      2048K filp  

ความดันแคช VFS:

cat /proc/sys/vm/vfs_cache_pressure
125

swappiness:

cat /proc/sys/vm/swappiness
0

ฉันรู้ว่าหน่วยความจำที่ไม่ได้ใช้เป็นหน่วยความจำที่สูญเปล่าดังนั้นสิ่งนี้ไม่ควรจะเป็นสิ่งที่ไม่ดี อย่างไรก็ตามเห็นได้ชัดว่าเครื่องมีปัญหาอย่างไรก็ตามถึงกระนั้นฉันก็กลัวว่าจะเกิดขึ้นอีกครั้งในอีกสองสามวันเมื่อ Slab มีขนาดเกิน 90 GB

คำถาม

ฉันมีคำถามเหล่านี้:

  • ฉันคิดถูกต้องหรือไม่ว่าหน่วยความจำ Slab นั้นเป็น RAM จริงและจำนวนนั้นถูกลบออกจากค่า MemFree แล้วหรือไม่
  • เป็นรายการที่มีจำนวนสูงมากปกติหรือไม่ แอปพลิเคชัน PHP มีการเข้าถึงไฟล์ประมาณ 1.5 M แต่ส่วนใหญ่เป็นไฟล์เก็บถาวรและไม่สามารถเข้าถึงได้ทั้งหมดสำหรับการเข้าชมเว็บปกติ
  • สิ่งที่อาจเป็นคำอธิบายสำหรับข้อเท็จจริงที่ว่าจำนวนของ inodes ที่แคชนั้นต่ำกว่าจำนวนของทันตกรรมที่ถูกแคชพวกเขาจะไม่เกี่ยวข้องกันอย่างไร
  • หากระบบมีปัญหาในหน่วยความจำเคอร์เนลไม่ควรเพิ่มฟันบางส่วนโดยอัตโนมัติหรือไม่? อาจมีสาเหตุอะไรที่ทำให้สิ่งนี้ไม่เกิดขึ้น?
  • มีวิธีใดบ้างที่ "มองเข้าไป" แคช dentry เพื่อดูว่าหน่วยความจำทั้งหมดนี้คืออะไร (เช่นอะไรคือเส้นทางที่ถูกแคชไว้) บางทีสิ่งนี้ชี้ไปที่การรั่วไหลของหน่วยความจำ, symlink loop หรือบางอย่างที่แอปพลิเคชัน PHP ทำผิด
  • รหัสแอปพลิเคชัน PHP รวมถึงไฟล์สินทรัพย์ทั้งหมดถูกเชื่อมต่อผ่านระบบไฟล์เครือข่าย GlusterFS ซึ่งมีส่วนเกี่ยวข้องหรือไม่

โปรดทราบว่าฉันไม่สามารถตรวจสอบในฐานะที่เป็นรูทในฐานะผู้ใช้ปกติเท่านั้นและผู้ดูแลระบบปฏิเสธที่จะช่วยเหลือ เขาจะไม่echo 2 > /proc/sys/vm/drop_cachesทำการทดสอบทั่วไปเพื่อดูว่าหน่วยความจำ Slab สามารถเรียกคืนได้หรือไม่

ข้อมูลเชิงลึกเกี่ยวกับสิ่งที่อาจเกิดขึ้นและวิธีที่ฉันสามารถตรวจสอบเพิ่มเติมใด ๆ ที่จะได้รับการชื่นชมอย่างมาก

อัพเดท

ข้อมูลการวินิจฉัยเพิ่มเติมบางอย่าง:

เมาท์:

cat /proc/self/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
devtmpfs /dev devtmpfs rw,relatime,size=66063000k,nr_inodes=16515750,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/mapper/sysvg-lv_root / ext4 rw,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sda1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
tmpfs /phptmp tmpfs rw,noatime,size=1048576k,nr_inodes=15728640,mode=777 0 0
tmpfs /wsdltmp tmpfs rw,noatime,size=1048576k,nr_inodes=15728640,mode=777 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
cgroup /cgroup/cpuset cgroup rw,relatime,cpuset 0 0
cgroup /cgroup/cpu cgroup rw,relatime,cpu 0 0
cgroup /cgroup/cpuacct cgroup rw,relatime,cpuacct 0 0
cgroup /cgroup/memory cgroup rw,relatime,memory 0 0
cgroup /cgroup/devices cgroup rw,relatime,devices 0 0
cgroup /cgroup/freezer cgroup rw,relatime,freezer 0 0
cgroup /cgroup/net_cls cgroup rw,relatime,net_cls 0 0
cgroup /cgroup/blkio cgroup rw,relatime,blkio 0 0
/etc/glusterfs/glusterfs-www.vol /var/www fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0
/etc/glusterfs/glusterfs-upload.vol /var/upload fuse.glusterfs rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
172.17.39.78:/www /data/www nfs rw,relatime,vers=3,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=38467,timeo=600,retrans=2,sec=sys,mountaddr=172.17.39.78,mountvers=3,mountport=38465,mountproto=tcp,local_lock=none,addr=172.17.39.78 0 0

ข้อมูลเมานต์:

cat /proc/self/mountinfo
16 21 0:3 / /proc rw,relatime - proc proc rw
17 21 0:0 / /sys rw,relatime - sysfs sysfs rw
18 21 0:5 / /dev rw,relatime - devtmpfs devtmpfs rw,size=66063000k,nr_inodes=16515750,mode=755
19 18 0:11 / /dev/pts rw,relatime - devpts devpts rw,gid=5,mode=620,ptmxmode=000
20 18 0:16 / /dev/shm rw,relatime - tmpfs tmpfs rw
21 1 253:1 / / rw,relatime - ext4 /dev/mapper/sysvg-lv_root rw,barrier=1,data=ordered
22 16 0:15 / /proc/bus/usb rw,relatime - usbfs /proc/bus/usb rw
23 21 8:1 / /boot rw,relatime - ext4 /dev/sda1 rw,barrier=1,data=ordered
24 21 0:17 / /phptmp rw,noatime - tmpfs tmpfs rw,size=1048576k,nr_inodes=15728640,mode=777
25 21 0:18 / /wsdltmp rw,noatime - tmpfs tmpfs rw,size=1048576k,nr_inodes=15728640,mode=777
26 16 0:19 / /proc/sys/fs/binfmt_misc rw,relatime - binfmt_misc none rw
27 21 0:20 / /cgroup/cpuset rw,relatime - cgroup cgroup rw,cpuset
28 21 0:21 / /cgroup/cpu rw,relatime - cgroup cgroup rw,cpu
29 21 0:22 / /cgroup/cpuacct rw,relatime - cgroup cgroup rw,cpuacct
30 21 0:23 / /cgroup/memory rw,relatime - cgroup cgroup rw,memory
31 21 0:24 / /cgroup/devices rw,relatime - cgroup cgroup rw,devices
32 21 0:25 / /cgroup/freezer rw,relatime - cgroup cgroup rw,freezer
33 21 0:26 / /cgroup/net_cls rw,relatime - cgroup cgroup rw,net_cls
34 21 0:27 / /cgroup/blkio rw,relatime - cgroup cgroup rw,blkio
35 21 0:28 / /var/www rw,relatime - fuse.glusterfs /etc/glusterfs/glusterfs-www.vol rw,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072
36 21 0:29 / /var/upload rw,relatime - fuse.glusterfs /etc/glusterfs/glusterfs-upload.vol rw,user_id=0,group_id=0,default_permissions,allow_other,max_read=131072
37 21 0:30 / /var/lib/nfs/rpc_pipefs rw,relatime - rpc_pipefs sunrpc rw
39 21 0:31 / /data/www rw,relatime - nfs 172.17.39.78:/www rw,vers=3,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=38467,timeo=600,retrans=2,sec=sys,mountaddr=172.17.39.78,mountvers=3,mountport=38465,mountproto=tcp,local_lock=none,addr=172.17.39.78

กำหนดค่า GlusterFS:

cat /etc/glusterfs/glusterfs-www.vol
volume remote1
  type protocol/client
  option transport-type tcp
  option remote-host 172.17.39.71
   option ping-timeout 10
   option transport.socket.nodelay on # undocumented option for speed
    # http://gluster.org/pipermail/gluster-users/2009-September/003158.html
  option remote-subvolume /data/www
end-volume

volume remote2
  type protocol/client
  option transport-type tcp
  option remote-host 172.17.39.72
   option ping-timeout 10
   option transport.socket.nodelay on # undocumented option for speed
        # http://gluster.org/pipermail/gluster-users/2009-September/003158.html
  option remote-subvolume /data/www
end-volume

volume remote3
  type protocol/client
  option transport-type tcp
  option remote-host 172.17.39.73
   option ping-timeout 10
   option transport.socket.nodelay on # undocumented option for speed
        # http://gluster.org/pipermail/gluster-users/2009-September/003158.html
  option remote-subvolume /data/www
end-volume

volume remote4
  type protocol/client
  option transport-type tcp
  option remote-host 172.17.39.74
   option ping-timeout 10
   option transport.socket.nodelay on # undocumented option for speed
        # http://gluster.org/pipermail/gluster-users/2009-September/003158.html
  option remote-subvolume /data/www
end-volume

volume replicate1
  type cluster/replicate
   option lookup-unhashed off    # off will reduce cpu usage, and network
   option local-volume-name 'hostname'
  subvolumes remote1 remote2
end-volume

volume replicate2
  type cluster/replicate
   option lookup-unhashed off    # off will reduce cpu usage, and network
   option local-volume-name 'hostname'
  subvolumes remote3 remote4
end-volume

volume distribute
  type cluster/distribute
  subvolumes replicate1 replicate2
end-volume

volume iocache
  type performance/io-cache
   option cache-size 8192MB        # default is 32MB
   subvolumes distribute
end-volume

volume writeback
  type performance/write-behind
  option cache-size 1024MB
  option window-size 1MB
  subvolumes iocache
end-volume

### Add io-threads for parallel requisitions
volume iothreads
  type performance/io-threads
  option thread-count 64 # default is 16
  subvolumes writeback
end-volume

volume ra
  type performance/read-ahead
  option page-size 2MB
  option page-count 16
  option force-atime-update no
  subvolumes iothreads
end-volume

โปรดให้การส่งออกของcat /proc/self/mountsและ cat /proc/self/mountinfo(อาจจะค่อนข้างยาว)
Matthew Ife

@MIfe ฉันได้อัปเดตคำถามแล้วเอาต์พุตทั้งสองจะต่อท้าย
Wolfgang Stengel

ความรู้สึกของฉันที่นี่เป็นไปได้ที่จะทำอย่างไรกับ NFS dentry caching cat /etc/nfsmount.confออกจากดอกเบี้ยคุณสามารถเรียกใช้ นอกจากนี้คุณยังมีไดเรกทอรีใด ๆ ที่มีไฟล์จำนวนมากในไดเรกทอรีทันทีหรือไม่
Matthew Ife

1
ดีตั้งแต่ vfs_cache_pressure> 100 เคอร์เนลควรต้องการเรียกคืนหน่วยความจำแคช dentrie นี่อาจเป็นข้อผิดพลาดได้อย่างง่ายดาย 2.6.32 เป็นเคอร์เนลที่ค่อนข้างเก่าแม้จะมีแพทช์ RedHat backport BTW รุ่นเคอร์เนลที่แน่นอนคืออะไร?
poige

2
(ระบบดูแลระบบของคุณฟังดูแย่มากมันทำให้เรามีชื่อที่ไม่ดี)
ewwhite

คำตอบ:


14

ฉันคิดถูกต้องหรือไม่ว่าหน่วยความจำ Slab นั้นเป็น RAM จริงและจำนวนนั้นถูกลบออกจากค่า MemFree แล้วหรือไม่

ใช่.

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

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

สิ่งที่อาจเป็นคำอธิบายสำหรับข้อเท็จจริงที่ว่าจำนวนของ inodes ที่แคชนั้นต่ำกว่าจำนวนของทันตกรรมที่ถูกแคชพวกเขาจะไม่เกี่ยวข้องกันอย่างไร

การดำเนินงานของไดเรกทอรีจำนวนมากจะเป็นคำอธิบายที่เป็นไปได้มากที่สุด

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

ควรและฉันไม่สามารถคิดด้วยเหตุผลใดก็ตามที่มันจะไม่ ฉันไม่เชื่อว่านี่เป็นสิ่งที่ผิดพลาดจริง ฉันขอแนะนำให้อัพเกรดเคอร์เนลของคุณหรือเพิ่ม vfs_cache_pressure เพิ่มเติม

มีวิธีใดบ้างที่ "มองเข้าไป" แคช dentry เพื่อดูว่าหน่วยความจำทั้งหมดนี้คืออะไร (เช่นอะไรคือเส้นทางที่ถูกแคชไว้) บางทีสิ่งนี้ชี้ไปที่การรั่วไหลของหน่วยความจำ, symlink loop หรือบางอย่างที่แอปพลิเคชัน PHP ทำผิด

ฉันไม่เชื่อว่ามี ฉันจะค้นหาไดเรกทอรีใด ๆ ที่มีรายการจำนวนมากอย่างไม่น่าเชื่อหรือโครงสร้างไดเรกทอรีที่ลึกมากซึ่งถูกค้นหาหรือสำรวจ

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

แน่นอนมันอาจเป็นปัญหาระบบไฟล์ ข้อผิดพลาดของระบบไฟล์ที่เป็นสาเหตุให้ไม่ให้มีการเผยแพร่ฟันเป็นไปได้


ขอบคุณที่ตอบคำถามของฉันทีละอย่าง ความดันแคชเพิ่มขึ้นในที่สุดและการเพิ่มแคชทันตกรรมหยุดลงในที่สุด
Wolfgang Stengel

ฉันยังไม่สามารถติดตามโปรแกรมที่รับผิดชอบได้ หากฉันพบข้อมูลเพิ่มเติมฉันจะรายงานกลับไปหาคนอื่นที่มีปัญหานี้
Wolfgang Stengel

1
ขอบคุณ! ไดเรคทอรี่ขนาดใหญ่ (0.25 ล้านไฟล์) เป็นสาเหตุของปัญหาโดยสิ้นเชิงในกรณีของฉันทุกครั้งที่มีสิ่งใดที่มีปฏิสัมพันธ์กับหน่วยความจำ 2GB RAM จะหายไปในแคช
Linux Nerd บางคน

20

โซลูชันที่ได้รับการยืนยัน

สำหรับทุกคนที่อาจประสบปัญหาเดียวกัน ในที่สุดพวกศูนย์ข้อมูลก็คิดออกในวันนี้ ผู้ร้ายคือห้องสมุด NSS (Network Security Services) ที่มาพร้อมกับ Libcurl การอัพเกรดเป็นเวอร์ชั่นล่าสุดแก้ปัญหาได้แล้ว

รายงานข้อผิดพลาดที่อธิบายรายละเอียดอยู่ที่นี่:

https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1044666

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


15

ฉันวิ่งเข้าไปในปัญหาที่แน่นอนนี้และในขณะที่ Wolfgang ถูกต้องเกี่ยวกับสาเหตุมีรายละเอียดที่สำคัญบางอย่างหายไป

  • ปัญหานี้ส่งผลกระทบต่อคำขอ SSL ที่ทำด้วย curl หรือ libcurl หรือซอฟต์แวร์อื่นใดที่ใช้ mozilla NSS สำหรับการเชื่อมต่อที่ปลอดภัย คำขอที่ไม่ปลอดภัยไม่ก่อให้เกิดปัญหา

  • ปัญหาไม่ต้องการการร้องขอ curl ที่เกิดขึ้นพร้อมกัน การสะสมของ dentry จะเกิดขึ้นตราบใดที่มีการเรียกขดบ่อยพอที่จะแซงหน้าความพยายามของระบบปฏิบัติการในการเรียกคืนแรม

  • NSS เวอร์ชันใหม่กว่า 3.16.0 มีการแก้ไขสำหรับสิ่งนี้ อย่างไรก็ตามคุณไม่ได้รับการแก้ไขฟรีโดยการอัพเกรด NSS และคุณไม่จำเป็นต้องอัปเกรด NSS ทั้งหมด คุณจะต้องอัพเกรด nss-softokn (ซึ่งต้องมีการพึ่งพา nss-utils) อย่างน้อยที่สุด และเพื่อให้ได้ประโยชน์คุณต้องตั้งค่าตัวแปรสภาพแวดล้อม NSS_SDB_USE_CACHE สำหรับกระบวนการที่ใช้ libcurl การปรากฏตัวของตัวแปรสภาพแวดล้อมนั้นคือสิ่งที่ช่วยให้การตรวจสอบไฟล์ไม่มีค่าใช้จ่ายถูกข้าม

FWIW ฉันเขียนรายการบล็อกที่มีพื้นหลัง / รายละเอียดเพิ่มเติมเล็กน้อยในกรณีที่ทุกคนต้องการ


ขอบคุณสำหรับการโพสต์บล็อกที่ดี แต่ฉันอยากจะพูดถึงว่า nss-softokn ยังไม่ได้รับการอัปเดตเป็นรุ่น 3.16 บน CentOS / RHEL มันอาจจะได้รับการแก้ไขในรุ่น 6.6
Strahinja Kustudic

1
ขอบคุณสำหรับการบันทึก บางทีอเมซอนอาจออกไปก่อนหน้านี้ (อาจจะตามคำขอของเรา?) สำหรับ repos ที่จัดการของพวกเขา สำหรับเวอร์ชั่นเก่า (3.14-3.15) คุณจะได้รับผลประโยชน์เพียงครึ่งเดียวโดยการตั้งค่าตัวแปรสภาพแวดล้อมที่เหมาะสม หากคุณมีความรู้คุณสามารถสร้าง v3.16 ได้โดยตรง มิฉะนั้นการเพิ่มความดันแคชและการรับ CPU ที่เกี่ยวข้องอาจเป็นทางออกที่ดีที่สุดของคุณสำหรับประสิทธิภาพที่เชื่อถือได้
J. Paulding

3
นี้ได้รับการแก้ไขใน Centos 6.6 ด้วย nss-softokn-3.14.3-17
Strahinja Kustudic

1
เพื่อให้ชัดเจนสำหรับผู้ที่กำลังมองหาการแก้ไขอย่างรวดเร็ว: คุณต้องอัปเดตnss-softokenRPM และตั้งค่าNSS_SDB_USE_CACHE=YESenv var เพื่อให้การโทร https curl หยุดน้ำท่วมแคชทันตกรรมของคุณ
Steve Kehlet

4

ดูhttps://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.7/2.6.7-mm1/broken-out/vfs-shrinkage-tuning.patch

มีตัวเลขที่แสดงว่าคุณสามารถคาดหวังว่าจะเรียกคืนหน่วยความจำ dentry ที่เห็นได้ชัดเจนเมื่อ vfs_cache_pressure ตั้งค่าไว้สูงกว่า 100 ดังนั้น 125 อาจต่ำเกินไปที่จะเกิดขึ้นในกรณีของคุณ


จากทั้งหมดที่ฉันได้อ่านการเพิ่มขึ้นvfs_cache_pressureไป100นั้นเหมาะสมถ้าคุณมี RAM ไม่เพียงพอสำหรับภาระงานของคุณ ในกรณีดังกล่าวการมีค่ามากกว่า 100 (เช่น 10,000) จะทำให้ RAM ว่าง ซึ่งจะส่งผลให้ IO โดยรวมแย่ลง
Mikko Rantalainen

3

ไม่ใช่คำอธิบายสำหรับคำตอบของคุณ แต่เป็นผู้ใช้ระบบนี้ข้อมูลนี้ที่คุณให้:

cat /proc/meminfo
MemTotal:       132145324 kB
...
SReclaimable:   44561644 kB
SUnreclaim:      1678736 kB

ก็พอที่จะบอกฉันว่านี่ไม่ใช่ปัญหาของคุณและความรับผิดชอบของดูแลระบบเพื่อให้คำอธิบายที่เพียงพอ

ฉันไม่ต้องการเสียงหยาบคายที่นี่ แต่;

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

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

อย่าลังเลที่จะบอกเขาว่าคนแปลกหน้าบนอินเทอร์เน็ตคิดว่าเขาไม่ได้รับผิดชอบอย่างจริงจัง

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