การตั้งค่า APC ที่ดีที่สุดเพื่อลดเวลาในการเรียกใช้เพจ


16

ฉันมี Drupal 7, apc พร้อม php-fpm และ apache ที่อยู่ด้านหลังวานิชและ RAM 512 เมกะไบต์

ฉันวัดเวลาดำเนินการเพจด้วยโมดูล devel

เวลาแบบสอบถามฐานข้อมูลต่ำ (62ms) เมื่อเทียบกับเวลาดำเนินการหน้าซึ่งเป็น 854 ms นั่นหมายความว่ามีปัญหากับการตั้งค่า PHP และ APC

การตั้งค่าปัจจุบันของฉันเป็นเพียง

apc.shm_size = 64
apc.stat=1 

ฉันจะปรับปรุงได้อย่างไร

การตั้งค่าที่ดีที่สุดสำหรับ Drupal คืออะไรจากการกำหนดค่าข้างต้น

ขอบคุณ

คำตอบ:


12

เราทำงานในสภาพแวดล้อมแบบพุช SVN ดังนั้นเราจึงล้างแคชไฟล์ apc ด้วยสคริปต์เท่านั้น

การตั้งค่า APC:

apc.ttl=604800
apc.user_ttl=3600
apc.shm_size=192M
apc.include_once_override=1
auto_globals_jit=Off
apc.num_files_hint = 2048

apc.stat_ctime = 0
apc.file_update_protection = 2
apc.stat = 0

สคริปต์ PHP:

<?php
$return = apc_clear_cache('opcode');
echo var_export($return);

604800 = 1 สัปดาห์

หลังจากนี้การทำให้ xdebug / xhprof เริ่มทำงานและทำแคชบดของไซต์ควรแจ้งให้คุณทราบว่ามีอะไรทำให้เว็บไซต์ทำงานช้าลง ในการวิเคราะห์สั้น ๆ แคชคัทเอาท์พุทเป็นวิธีที่ดีที่สุดในการเพิ่มความเร็วให้ Drupal ด้านล่างฉันจะแสดงรายการโปรแกรมปรับปรุงและโมดูลที่เราใช้เพื่อเร่งความเร็ว ในกรณีของคุณมันจะแตกต่างกันมากที่สุด

Drupal 6 คำตอบเฉพาะด้านล่าง

เมื่อคุณผ่านจุดนี้ไปแล้วและตระหนักว่า APC จะไม่ให้สิ่งที่คุณต้องการให้เปลี่ยนเป็นpressflowและให้สิ่งเหล่านี้เป็นรูปเป็นร่าง:

ลองใช้โมดูลเหล่านี้ด้วยเมื่อพวกเขาปรับปรุงเว็บไซต์ของเราให้เร็วขึ้นอย่างมาก:


ขอบคุณมากสำหรับคำตอบของคุณ แต่ฉันมี Drupal 7
john

ดังนั้นให้นำชิ้นส่วน APC และชิ้นส่วน xdebug / xhprof แล้วดูที่ชุดข้อมูลแก้ไข D6 เพื่อเป็นตัวอย่างของสิ่งที่ต้องค้นหาในคิวปัญหาการทำ แพตช์ด้านบนทั้งหมดที่เป็นผลมาจากการมองแคชบดค้นหาจุดปวดและค้นหาปัญหาที่เกี่ยวข้อง เริ่มต้นอย่างรวดเร็ว: drupal.org/project/issues/search/…
mikeytown2

มีวิกิพีเดียประสิทธิภาพ drupal 7 อยู่ในขณะนี้: groups.drupal.org/node/210683
mikeytown2

1
เพียงแค่ FYI ฉันต้องแสดงความคิดเห็นบรรทัด apc.include_once_override = 1 เพราะทำลายเว็บไซต์ puregin.org/node/2550/3928
corbacho

php.net/apc.configuration#ini.apc.include-once-overrideขอบคุณที่ชี้ให้เห็น ขึ้นอยู่กับรุ่น PHP และ APC อาจทำให้เกิดปัญหา
mikeytown2

3

นี่เป็นหนึ่งในนั้น "นานแค่ไหนที่เป็นส่วนหนึ่งของคำถามสตริง"

สิ่งที่ดีสำหรับไซต์ที่มีปริมาณมากอาจไม่เหมือนกันสำหรับไซต์ที่มีปริมาณน้อยที่มีโมดูลจำนวนมากและอาจไม่เหมือนกันสำหรับไซต์ที่มีปริมาณปานกลางที่มีโมดูลที่เปิดใช้งานเพียงไม่กี่โมดูล ไซต์อื่น ๆ ที่ทำงานบนเซิร์ฟเวอร์อาจกินหน่วยความจำที่ APC มีให้ด้วย

จุดเริ่มต้นของฉันคือ

apc.enabled=1
apc.shm_segments=1
apc.shm_size=64
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
apc.rfc1867=1

ฉันจะปรับการตั้งค่าสำหรับเซิร์ฟเวอร์ แต่อีกครั้งไม่มีขนาดที่เหมาะกับการตั้งค่าทั้งหมด

ค้นหา apc.php (อาจอยู่ที่ /usr/share/pear/apc.php) และติดตั้งใน DOCROOT สำหรับการติดตั้ง Drupal ของคุณ ล็อคมันลงในที่อยู่ IP ของคุณผ่าน Apache config แก้ไขชื่อผู้ใช้ / รหัสผ่านภายในแล้วเรียกดู จากนั้นคุณจะเห็นสถิติ APC ของคุณ

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

ปรับ TTL ให้เหมาะสมเพื่อป้องกันไม่ให้เกิดการแคช หากคุณไม่ได้แก้ไขไฟล์คุณสามารถชนหมายเลขนี้ได้

enable_cli มีประโยชน์เมื่อคุณใช้ drush บ่อยครั้งดังนั้น drush จึงใช้ไฟล์แคชจาก APC

rfc1867 มีประโยชน์สำหรับการอัปโหลดไฟล์

ฉันยังสังเกตเห็น php-fpm ในชื่อ สิ่งนี้ทำให้เกิดความยุ่งยากและอยู่นอกเหนือขอบเขตของ Drupal Answers คุณอาจได้รับการตอบสนองที่ดีขึ้นที่Server Faultเนื่องจากการตั้งค่าระบบจำนวนมากไม่เกี่ยวข้องกับ Drupal โดยตรง


มีแบบฝึกหัดที่ดีที่อธิบายในภาษาง่าย ๆ ว่าการตั้งค่าแต่ละอย่างทำอะไรเช่น ttl, เซกเมนต์ ฯลฯ ? cli ช่วยด้วยวิธี drush ได้อย่างไร?
john

คุณช่วยอธิบายได้ว่า "ทราฟฟิกที่ฉันได้รับ, อะไรที่กำลังทำงานอยู่บนเซิร์ฟเวอร์, โมดูลที่ฉันติดตั้งไว้, ฯลฯ " ส่งผลกระทบต่อการตั้งค่า? ขอบคุณ
john

การตั้งค่าเหล่านี้ไม่ได้ช่วยอะไรมากมาย ฉันควรลอง xhprof เพื่อดูว่าเกิดอะไรขึ้นกับ php?
john

การตั้งค่า APC ทั้งหมดมีการอธิบายไว้ที่php.net/manual/en/apc.configuration.php
mpdonadio

1
@MPD> enable_cli สะดวกเมื่อคุณใช้ drush บ่อยครั้งดังนั้น drush จึงใช้> cached files จาก APC จริงๆแล้ว cli เป็นกระบวนการที่แยกต่างหากและไม่แชร์แคช apc กับ apache หรือแม้กระทั่งระหว่างการโทรเพื่อดื่ม
Robin Millette

2

APC เพิ่งปรับปรุงการโหลดและแยกไฟล์ PHP ส่วนใหญ่ยังเป็นเวลาดำเนินการเอง มีหลายปัจจัยที่สามารถเพิ่มเวลาดำเนินการรวมถึงข้อบกพร่อง (โดยเฉพาะอย่างยิ่งข้อบกพร่องที่เกี่ยวข้องกับแคช) ค่าใช้จ่ายภายใน (เช่น drupal_alter (), module_implements ()) และอื่น ๆ

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

ฉันเพิ่งเขียนบทความสองบล็อกเกี่ยวกับการใช้ xhprof ภายใน Drupalและคอขวดทั่วไปซึ่งคุณอาจพบว่าน่าสนใจ


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