การโหลดหน้าวีโอไอพีใช้เวลานานเกินไป


10

ฉันมีเว็บไซต์วีโอไอพี ไม่มีผู้ใช้ใด ๆ (สูงสุด 2-3 ครั้ง)

เซิร์ฟเวอร์ของเราคือ: CPU: 2000MHz RAM: 2048Mb HDD: 50000Mb

ฉันติดตั้ง ZendServerCE (apc + memcached + Zend Optimizer + Zend Data Cache) ฉันปิด memcached เนื่องจากเว็บไซต์โหลดมากที่สุด ฉันตั้งค่าโครงสร้างแบบแบน, ทำดัชนีใหม่และเก็บข้อมูลในคอนโซลผู้ดูแลระบบ

ดังนั้นผมจึงมีAPC + Zend Optimizer + Zend แคชข้อมูล

  1. ปัญหาแรกคือฉันตรวจสอบรันไทม์ว่าทำงานอย่างไร start_session () การโทรใช้เวลาประมาณ 500-700ms ดูเหมือนว่าจะไม่ได้ผลดี ทำไมนานฉันไม่รู้

  2. ฉันได้อ่านอันนี้แล้ว: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_buffer_sizeและหาตัวเลือกที่เหมาะสมที่สุดสำหรับเซิร์ฟเวอร์ของฉัน

ต่อชั่วโมง:

Key_read_requests = 8887
Key_reads         = 252
Key_write_request = 187
Key_writes        = 146 

คุณเห็นว่า 252/8887> 0.01 แต่ไม่มากเกินไป มันคุ้มค่าที่สุดที่ฉันเคยได้รับ ผลลัพธ์อื่นเริ่มต้นจาก> 6

นี่คือ my.cnf:

key_buffer              = 48M
myisam_sort_buffer      = 2M
sort_buffer             = 2M
read_buffer_size        = 2M
join_buffer             = 2M
read_rnd_buffer         = 2M
max_allowed_packet      = 128M
thread_stack            = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover         = BACKUP
max_connections        = 50
table_cache            = 256
#thread_concurrency     = 10
query_cache_limit       = 8M
query_cache_size        = 98M

3. Memcached ด้วยเหตุผลบางอย่างไม่ดี ฉันปิดมัน แต่แคชข้อมูล zend และเครื่องมือเพิ่มประสิทธิภาพ zend ยังคงทำงานได้

4. APC ดูเหมือนถูกต้อง ในการโหลดการกระทำของคอนโทรลเลอร์ใช้เวลา 3-4 วินาทีเป็นครั้งแรก (ฉันตั้งค่าตาย () เพื่อตรวจสอบ) และเป็นครั้งแรกใช้เวลา 1 - 1.3 วินาที

5. หลังจากผ่านไปหลายนาทีฉันก็เริ่ม mysql ใหม่ฉันได้ผลดี กำลังโหลดหน้าเว็บจาก 1.5 ถึง 2.5 วินาที แต่ตอนนี้ (หลังจากผ่านไปหลายชั่วโมง) จะใช้เวลา 6-10 วินาที ฉันหาเหตุผลไม่พบ

ดังนั้นคุณเห็นการกำหนดค่าที่ไม่ถูกต้องที่นี่หรือไม่ เซิร์ฟเวอร์ของฉันอาจไม่เหมาะกับวีโอไอพีหรือไม่?

อัปเดต 1: ประมาณ 600 หมวดหมู่และ 1,000 ผลิตภัณฑ์วันนี้และประมาณ 20,000 หมวดหมู่ (สำหรับเว็บสโตร์ที่แตกต่างกัน) และ 1,500-3,000 ผลิตภัณฑ์ในอนาคต

มีคุณสมบัติไม่มาก

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

มันเป็นสถานะเริ่มต้นสิ่งที่ apache:

             total       used       free     shared    buffers     cached
Mem:          2048        600       1447

อัปเดต 3 ฉันได้รับแล้ว ตอนนี้มันถูกโหลด 0.5-1.5 วินาที

นี่คือการกำหนดค่า: mysql

[mysqld]
key_buffer_size         = 256M
tmp_table_size      = 32M
max_heap_table_size     = 32M
myisam_sort_buffer      = 4M
sort_buffer             = 4M
read_buffer_size        = 4M
join_buffer     = 4M
read_rnd_buffer     = 4M
max_allowed_packet  = 64M
thread_stack        = 192K
thread_cache_size       = 16
query_cache_type        = 1
myisam-recover          = BACKUP
max_connections         = 20
table_cache             = 1024
innodb_buffer_pool_size = 128M
query_cache_limit   = 24M
query_cache_size        = 256M

PHP

[apc]
apc.stat=1
apc.enabled=1
apc.optimization=0
apc.cache_by_default=1
apc.shm_segments=10
apc.shm_size=256M
apc.ttl=0
apc.user_ttl=0
apc.num_files_hint=10000
;apc.mmap_file_mask="/tmp/apc"
apc.max_file_size=5M
apc.enable_cli=1
apc.mmap_file_mask="/tmp/apc.XXXXXX"
apc.slam_defense=0
apc.user_entries_hint=10000

ทุกอย่างสมบูรณ์แบบ แต่ยังคงมีคำถามหนึ่งข้อ APC แสดงสถิตินี้ให้ฉันเห็น: ป้อนคำอธิบายรูปภาพที่นี่

ทำไมถึงมีขนาดเล็ก ความคิดใด ๆ


มันจะดีถ้าคุณวางคู่สายเกี่ยวกับการติดตั้ง Magneto ของคุณ (เช่นขนาดแคตตาล็อกการแก้ไขส่วนขยายและอื่น ๆ )
user487772

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

โปรดอธิบายด้วยว่าทำไมคุณถึงลงคะแนน
แอนโธนี

@Tim ฉันอัปเดตคำถาม
Anthony

2
ฉันจะดรอปxhprofและพยายามสร้างภาพข้อมูลของสิ่งที่ใช้เวลาในการโหลดมากที่สุด นี่เป็นเซิร์ฟเวอร์ที่ใช้งานจริงหรืออยู่ระหว่างการทดสอบหรือไม่
philwinkle

คำตอบ:


6

เนื่องจากคำถามดูเหมือนจะไม่ได้เป็นศูนย์กลางวีโอไอพีที่นี่เป็นคำตอบที่ไม่ได้เป็นวีโอไอพีของฉันมาก

OpCode แคและการเพิ่มประสิทธิภาพ DB เป็นวิธีที่ดีในการเร่งการใช้งานเว็บของคุณในระดับหนึ่ง แต่ประโยชน์จะค่อนข้างปานกลาง เพื่อเพิ่มความเร็วจริงคุณควรพิจารณาใช้น้ำยาวานิช มันเป็นโอเพ่นซอร์ส, กำหนดค่าได้ง่ายและง่ายต่อการรวมเข้ากับวีโอไอพีด้วยโมดูลที่ใช้ได้อย่างอิสระสำหรับวีโอไอพี

นอกจากนี้ยังมีบทความที่ดีพร้อมภาพรวมโดยย่อเกี่ยวกับวิธีการทำงาน: http://www.fabrizio-branca.de/make-your-magento-store-fly-using-varnish.html

พิจารณาแผนภูมิโดยเฉพาะอย่างยิ่ง:

หน้า / วินาที


4
วานิชนั้นยอดเยี่ยมถ้าคุณมีร้านค้าที่รวดเร็วและต้องการชดเชยทรัพยากร แต่ไม่ควรใช้เพื่อซ่อนความจริงที่ว่าร้านค้านั้นช้า หน้าจะต้องถูกสร้างขึ้นตั้งแต่แรกดังนั้นมันจะเป็น 6-10 ครั้งในการโหลดหน้าโดยไม่คำนึงถึง
Ben Lessani - Sonassi

ดูเหมือนว่าจะเป็น memcached ที่ฉันเคยใช้มาก่อน ฉันคิดว่าฉันทำผิดในคุณสมบัติของบ MySQL หรือเซิร์ฟเวอร์อ่อนแอเกินไป
แอนโธนี

2

หากธุรกิจของคุณเชื่อถือได้กับโฮสต์ของคุณที่มีประสิทธิภาพดีทำไมคุณจึงพยายามบริหารเซิร์ฟเวอร์โดยไม่มีประสบการณ์

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

ดูรายละเอียดสเปคของคุณคุณมี RAM ไม่เพียงพอที่จะพยายามเปิดร้านวีโอไอพี มีคำถามที่คล้ายกันมากมายเช่นคำถามของคุณ

https://serverfault.com/a/400748/113375
/server/430565/magento-hosting-on-a-budget


เพราะลูกค้าของเรามีงบประมาณ จำกัด ฉันควรจ่ายสำหรับโฮสต์คุณภาพเยี่ยมมากกว่า 50 ยูโรต่อเดือน เรามีข้อ จำกัด สำหรับโฮสต์ 150-200 ยูโรต่อปี -) ขอบคุณมากสำหรับการเชื่อมโยง
Anthony

1
จากนั้นลูกค้าสามารถคาดหวังที่จะสร้างรายได้ ~ $ 20-40,000 / ปีกับการเพิ่มประสิทธิภาพ 100% (โฮสติ้งคือ 0.5-1% ของรายได้) ผู้คนมากมายที่นี่สามารถให้รายละเอียดและการตั้งค่าทางเทคนิคกับคุณได้ทั้งหมด แต่คุณพยายามทำสิ่งเล็ก ๆ น้อย ๆ ให้มากเกินไป คุณอาจได้รับมันเพื่อทำงานในด้านเทคนิค แต่ในด้านธุรกิจก็จะตกต่ำ เว้นแต่ว่าหน้าเว็บแบบไดนามิกของคุณโหลด (ไม่รวม fpc) อยู่ต่ำกว่า 3 วินาทีคุณจะสูญเสีย 56% ของผู้เข้าชมการกำหนดเป้าหมาย 1-2 วินาทีอย่างเหมาะสม - การแปลงของ Google และผู้เยี่ยมชมจะเป็นการลงโทษไซต์เป็นอย่างอื่น - โทรยาก เมื่อพิจารณาถึงสถานการณ์มีโอกาส 95-99%> การโหลดหน้าเว็บ 3 วินาทีและ / หรือไซต์

1

นี่เป็นฮาร์ดแวร์จริงหรือเซิร์ฟเวอร์เสมือนจริงหรือไม่? คุณควรย้ายฐานข้อมูลไปยังเซิร์ฟเวอร์เฉพาะของตัวเอง สิ่งนี้ยังช่วยให้คุณได้รับประโยชน์จากความสามารถในการแยกแยะว่าปัญหาเรื่องความเร็วของคุณอยู่กับ Apache / PHP หรือ MySQL

start_session () ช้าหมายความว่าคุณอาจกำลังทุกข์ทรมานจากฮาร์ดแวร์ที่ใช้กำลังต่ำ ฉันไม่รู้ว่าตัวเลือกเทคโนโลยีของคุณหมายความว่าเซสชันถูกเก็บไว้ในดิสก์หรือใน RAM แต่ 500-700ms เกือบจะแน่นอนว่าพวกเขากำลังถูกเก็บไว้ในดิสก์และคุณประสบปัญหาประสิทธิภาพการทำงานของ I / O - อาจเป็นเพราะฐานข้อมูลของคุณ สลับไปที่ดิสก์เพราะมันจะไม่พอดีกับ RAM ... แต่นั่นคือการเก็งกำไรทั้งหมด

โชคดี!


ขอบคุณสำหรับคำตอบ! ฉันใช้ VPS มันไม่เหมาะกับวีโอไอพีมากนัก แต่ฉันมีหน้าที่ที่จะต้องปรับปรุงมันในขอบเขตนี้ เป็นไปได้หรือไม่ที่จะตรวจสอบว่าฐานข้อมูลสลับเป็นดิสก์หรือไม่?
แอนโทนี่

1
free -mจะบอกคุณว่าคุณกำลังใช้การแลกเปลี่ยนเลยหรือไม่และtopคำสั่งเวอร์ชันล่าสุดจะแจ้งให้คุณทราบว่ากด O และ P เพื่อสั่งซื้อโดยใช้การสลับหรือไม่ มิฉะนั้นคุณต้องถอยกลับไปใช้รหัสกระบวนการของ mysqld กับสิ่งนี้: awk '/^Swap:/ { SWAP+=$2 } END { print SWAP" kB" }' /proc/$(pidof mysqld)/smaps ทั้งหมดอธิบายไว้ที่นี่: dbasquare.com/2012/04/10/…
Ralph Tice

1

เห็นได้ชัดว่าไม่มีวิธีใดที่จะแสดง 'การกำหนดค่าการทำงาน' ที่จะเพิ่มประสิทธิภาพการทำงานของคุณ แต่วีโอไอพีจะพยายามทำสิ่งนี้และโพสต์ตัวอย่างของสแต็ค LAMP ที่มีการกำหนดค่าสูงไว้ในเอกสารประสิทธิภาพ วิธีการของเอกสารไวท์เปเปอร์เหล่านี้มีผลกับ CE และ EE ฉันขอแนะนำให้อ่านเอกสารสีขาวทั้งเล่มอย่างสมบูรณ์ตามที่ความคิดที่แนะนำนั้นสะท้อนเนื้อหาส่วนใหญ่และให้คำแนะนำเกี่ยวกับวีโอไอพีที่เฉพาะเจาะจงมากโดยตรงจากแหล่งข้อมูล: http://www.magentocommerce.com/whitepaper/


1

องค์ประกอบ

ZendFramework (เครื่องมือเพิ่มประสิทธิภาพ zend และแคชข้อมูล zend) + APC + Memcache + Nginx

ทำงานได้สมบูรณ์แบบสำหรับฉัน

ผู้ใช้ที่เชื่อมโยงกันมากกว่า 30 คนสามารถโหลดหน้าน้อยกว่าหนึ่งวินาที (~ 0.4s-0.6s)

ฉันตั้ง nginx ที่ 80 port (เป็น proxy) และ apache ที่ 8080

ขอบคุณ @MattSchweers สำหรับลิงก์ ฉันลืมไปแล้ว มันช่วยให้ฉันกำหนดค่า MySQL


ไม่มีปัญหา! จริง ๆ แล้วฉันใช้เอกสารสีขาวเหล่านั้นสำหรับการปรับแต่ง MySQL ในสัปดาห์นี้ - ทำงานได้ดี

1

จากประสบการณ์ของฉันเซิร์ฟเวอร์ litespeed ช่วยเพิ่มประสิทธิภาพ 2 x คุ้มค่ากับใบอนุญาต 1cpu $ 32 / เดือน ฉันบอกว่าคุณจะต้องมีใบอนุญาต 1cpu ตั้งแต่ php ทำงานแยกต่างหากใน litespeed


เว็บเซิร์ฟเวอร์ไม่ใช่คอขวด PHP คือการเปลี่ยนเป็น Litespeed จะไม่เปลี่ยนแปลงอะไรเลย
Ben Lessani - Sonassi

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

0

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

Magento ทำการอ่านเขียนไปยังฐานข้อมูลเป็นจำนวนมากดังนั้นคุณสามารถลอง MySQl ของคุณในโหมดการจำลองแบบ Master Slave ได้ซึ่ง Magento ทั้งหมดจะอ่านจากทาสในขณะที่การเขียนเกิดขึ้นกับต้นแบบ


0

ฉันจะลองเปลี่ยนตัวเลือกของ APC ต่อไปนี้และดูว่าการเข้าชมที่มารับ

apc.shm_segments 1

apc.ttl 7200

apc.user_ttl 7200

บนเว็บไซต์จริงคุณสามารถใช้สิ่งต่อไปนี้ได้เช่นกัน

apc.stat 0

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


0

คู่อื่นความคิด คุณอาจต้องการเพิ่ม innodb_buffer_pool_size ของคุณ 128M อาจต่ำไปหน่อยและแม้แต่ไซต์เล็ก ๆ ก็สามารถเติบโตได้อย่างรวดเร็ว ตัวแปรจะกำหนดปริมาณข้อมูลของคุณในหน่วยความจำ

วีโอไอพีใช้สิ่งนี้สำหรับทุกตารางรวมถึงตารางบันทึกที่เติบโตอย่างรวดเร็ว คุณจะต้องแน่ใจว่าคุณได้ จำกัด จำนวนข้อมูลที่คุณเก็บไว้ การใช้ "php shell / log.php --status" จากบรรทัดคำสั่งจะทำให้คุณรู้ว่าคุณอยู่ที่ไหนและกำลังออกจากมือคุณ นอกจากนี้ยังมีตัวเลือกสำหรับทำความสะอาดตารางบันทึกด้วย

RAM ขนาด 2GB นั้นทำงานได้ไม่มากนักดังนั้นคุณจึงต้องระมัดระวังเกี่ยวกับตำแหน่งที่คุณจัดสรรหน่วยความจำ

นอกจากนี้เครื่องอุ่นแคชแบบเต็มหน้า + แคชสามารถช่วยให้แคตตาล็อกเว็บไซต์และหน้า cms ​​ของคุณลงสีพื้นได้และรวดเร็ว คุณสามารถดูของเราได้ที่นี่: http://ecommerce.brimllc.com/full-page-cache-magento.html

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