ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
COM64לא בפורום כעת ת.הצטרפות: 09/07/2003 · הודעות: 1608 · מיקום: ראשל"צ
 

הודעה פורסם: 14/09/2015 - 09:28
נושא ההודעה: שיפור ביצועי שרת Apache + Mysql

נתחיל בפרטים של השרת:
3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u3
Mysql 5.5.44-0+deb7u1
Apache 2.2.22-13+deb7u6

4 CPU
4GB RAM

המטרה היא לקבל תשובה מהשרת תוך פחות מ-200ms, זה מה שגוגל מגדיר כזמן סביר. לשרת ישנה בעית ביצועים בגלל גישה איטית למערך הדיסקים בגלל עומס של כמות מכונות וירטואליות על אותה חומרה פיזית.

מה אני מחפש?
1. "לשכנע" את mysql לנצל טוב יותר את הזיכרון.
2. להגדיר את Apache לבצע Minify לקבצי טקסט (html, js, css)

קצת פרטים נוספים:

קוד:
cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB


לאחר רצף הפקודות הבא:
קוד:
echo 20 > /proc/sys/vm/nr_hugepages
echo 107 > /proc/sys/vm/hugetlb_shm_group
echo 1024 > /proc/sys/kernel/shmmax
echo 384 > /proc/sys/kernel/shmall
cat /proc/meminfo | grep -i huge

AnonHugePages:         0 kB
HugePages_Total:      20
HugePages_Free:       20
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB


לקובץ my.cnf נוספה האופציה large-pages
לקובץ /usr/bin/mysqld_safe נוספה האופציה ulimit -l unlimited

לקובץ apache.conf נוספה השורה הבאה:
קוד:
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript


אך הקבצים עדיין אינם "שטוחים".

אני לא רואה עליה בשימוש בזיכרון או שיפור בתגובה של השרת.

_________________
איזי גולדנברג
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
eאורח · ·
 

הודעה פורסם: 14/09/2015 - 11:39
נושא ההודעה:

עומס של מכונות וירטואליות על מכונה עם 4gb ram זה לא מתכון לביצועים ובכל הנוגע להגשת קבצים סטטים אפצי לא נחשב לשרת יעיל במיוחד.מה שפת התכנות שמעורבת פה? איך עשית את הניתוח שלפיו החלטת מה מקור הבעיה?

בכל מקרה לגבי Minify זו פעולה שעושים בדרך כלל כחלק מה-build של הפרוייקט, זה לא כל כך יעיל שאפצי יעשה את זה בעצמו אבל כדי שזה יקרה תצטרך להתקין mod מתאים. deflate עושה gzip לקבצים בזמן המשלוח שלהם לדפדפן זו פעולה ברוח דומה אבל זה לא Minify.

deflate לא משנה את התוכן של הקובץ אם הוא עושה את העבודה שלו אתה אמור לראות בדפדפן את ה-response header
קוד:
Content-Encoding:gzip
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
COM64לא בפורום כעת ת.הצטרפות: 09/07/2003 · הודעות: 1608 · מיקום: ראשל"צ
 

הודעה פורסם: 14/09/2015 - 15:13
נושא ההודעה:

השרת רץ על ג'ומלה עם מינימום תוספים. מעל ג'ומלה מותקנת חנות וירטואלית - Virtuemart ותוסף יחיד נוסף להכנסת קוד לתוך מוצרים. כל הרכיבים כולל מערכת ההפעלה מעודכנים לגרסאות האחרונות.

השרת הוירטואלי מקבל 4GB מתוך 64GB שיש לשרת המארח. אין בעיית זיכרון לשרת המארח, כך שאני יכול להוסיף זיכרון למכונה הוירטואלית הרלוונטית. גם משאבי CPU לא "חנוקים" על השרת המארח. הבעיה שאני מודע לה היא גישה איטית לדיסקים בגלל מכונות תובעניות נוספות שמתארחות על אותו שרת.

את המידע אני מקבל מכלי שגוגל מפרסמים בקישור הבא:
https://developers.google.com/speed/pagespeed/insights

העניין הוא שהם נותנים ל-Minify ציון, כלומר לעצם ביצוע הצמצום של הקובץ. כלומר גם אם Apache לא יבצע את זה באופן הכי יעיל, עדיין גוגל יתייחסו לביצוע הפעולה עצמה.

רשימת המודולים שאפצ'י מעלה:
קוד:
lrwxrwxrwx 1 root root   28 Jul  5  2014 alias.conf -> ../mods-available/alias.conf
lrwxrwxrwx 1 root root   28 Jul  5  2014 alias.load -> ../mods-available/alias.load
lrwxrwxrwx 1 root root   33 Jul  5  2014 auth_basic.load -> ../mods-available/auth_basic.load
lrwxrwxrwx 1 root root   33 Jul  5  2014 authn_file.load -> ../mods-available/authn_file.load
lrwxrwxrwx 1 root root   36 Jul  5  2014 authz_default.load -> ../mods-available/authz_default.load
lrwxrwxrwx 1 root root   38 Jul  5  2014 authz_groupfile.load -> ../mods-available/authz_groupfile.load
lrwxrwxrwx 1 root root   33 Jul  5  2014 authz_host.load -> ../mods-available/authz_host.load
lrwxrwxrwx 1 root root   33 Jul  5  2014 authz_user.load -> ../mods-available/authz_user.load
lrwxrwxrwx 1 root root   32 Jul  5  2014 autoindex.conf -> ../mods-available/autoindex.conf
lrwxrwxrwx 1 root root   32 Jul  5  2014 autoindex.load -> ../mods-available/autoindex.load
lrwxrwxrwx 1 root root   28 Sep 13 11:38 cache.load -> ../mods-available/cache.load
lrwxrwxrwx 1 root root   26 Jul  5  2014 cgi.load -> ../mods-available/cgi.load
lrwxrwxrwx 1 root root   30 Jul  5  2014 deflate.conf -> ../mods-available/deflate.conf
lrwxrwxrwx 1 root root   30 Jul  5  2014 deflate.load -> ../mods-available/deflate.load
lrwxrwxrwx 1 root root   26 Jul  5  2014 dir.conf -> ../mods-available/dir.conf
lrwxrwxrwx 1 root root   26 Jul  5  2014 dir.load -> ../mods-available/dir.load
lrwxrwxrwx 1 root root   26 Jul  5  2014 env.load -> ../mods-available/env.load
lrwxrwxrwx 1 root root   30 Sep 13 11:03 expires.load -> ../mods-available/expires.load
lrwxrwxrwx 1 root root   33 Sep 14 07:48 ext_filter.load -> ../mods-available/ext_filter.load
lrwxrwxrwx 1 root root   29 Sep 14 07:48 filter.load -> ../mods-available/filter.load
lrwxrwxrwx 1 root root   28 Jul  5  2014 geoip.conf -> ../mods-available/geoip.conf
lrwxrwxrwx 1 root root   28 Jul  5  2014 geoip.load -> ../mods-available/geoip.load
lrwxrwxrwx 1 root root   30 Sep 13 11:28 headers.load -> ../mods-available/headers.load
lrwxrwxrwx 1 root root   27 Jul  5  2014 mime.conf -> ../mods-available/mime.conf
lrwxrwxrwx 1 root root   27 Jul  5  2014 mime.load -> ../mods-available/mime.load
lrwxrwxrwx 1 root root   34 Jul  5  2014 negotiation.conf -> ../mods-available/negotiation.conf
lrwxrwxrwx 1 root root   34 Jul  5  2014 negotiation.load -> ../mods-available/negotiation.load
lrwxrwxrwx 1 root root   27 Jul  5  2014 php5.conf -> ../mods-available/php5.conf
lrwxrwxrwx 1 root root   27 Jul  5  2014 php5.load -> ../mods-available/php5.load
lrwxrwxrwx 1 root root   33 Jul  5  2014 reqtimeout.conf -> ../mods-available/reqtimeout.conf
lrwxrwxrwx 1 root root   33 Jul  5  2014 reqtimeout.load -> ../mods-available/reqtimeout.load
lrwxrwxrwx 1 root root   30 Aug 14  2014 rewrite.load -> ../mods-available/rewrite.load
lrwxrwxrwx 1 root root   31 Jul  5  2014 setenvif.conf -> ../mods-available/setenvif.conf
lrwxrwxrwx 1 root root   31 Jul  5  2014 setenvif.load -> ../mods-available/setenvif.load
lrwxrwxrwx 1 root root   29 Jul  5  2014 status.conf -> ../mods-available/status.conf
lrwxrwxrwx 1 root root   29 Jul  5  2014 status.load -> ../mods-available/status.load


להבנתי הפעלתי את כל המודולים הנדרשים לדחיסה וצמצום הקבצים.
אני יכול לבצע Minify ידני לרוב הקבצים אך הדבר ידרש לאחר כל עדכון של הרכיבים על האתר, בערך אחת לשבוע שבועיים. זו הסיבה שאני רוצה שהשרת יבצע זאת בעצמו.

כרגע אני חושב שאם אצמצם את הגישה לדיסק עבור קריאות מבסיס הנתונים, תיהיה לכך השפעה על הציוד שגוגל נותן לאתר. כמובן בנוסף לפעולות הטכניות של צמצום הקבצים.

תודה

_________________
איזי גולדנברג
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 14/09/2015 - 16:52
נושא ההודעה:

לדעתי, אפצ'י הוא בזבזני מאוד בכמות משאבים.
בנוסף, שאני יורד ממנו ועובר ל nginx, יש כמה דברים מאוד חשובים שצריך לקחת בחשבון, וזה היכולת להגיד לו להשתמש נכון במעבד שלך.

אתה תקבל ביצועים ממש ירודים אם הוא לא מכוון נכון מול הזיכרון, אבל יותר חשוב מול המעבד. אם יש לך 16 ליבות, והוא מכוון לעבוד עם 8, הוא יעבוד רע יותר. יש איזה צוואר בקבוק בהגבלה הזו. אבל אם תגיד לו להשתמש ב16 מעבדים, אז הוא יעבוד טוב יותר ומהיר יותר.

לגבי mysql, זה תלוי בהמון גורמים. למשל איך אתה עובד, מה המשימות שאתה עושה, מה ה mode שאתה עושה, איזה סוגי נעילות, והרשימה עוד ארוכה.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
eאורח · ·
 

הודעה פורסם: 14/09/2015 - 19:10
נושא ההודעה:

לגומלה יש תוספים משלו שמסוגלים לעשות minify, זה כנראה עדיף מאשר להפיל את זה על apache. אם אפשר תנסה לדאוג שגומלה תעשה caching לעמודים ולא תפנה כל הזמן ל-db כדי לבנות אותם.

האם מותקן על המכונה php accelerator? מנסיוני זה נותן בוסט משמעותי בביצועים וחוסך הרבה גישות לדיסק מה שמאוד יכול לעזור במקרה שלך.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
eאורח · ·
 

הודעה פורסם: 14/09/2015 - 19:16
נושא ההודעה:

אני גם לא רואה שהתקנת שום מודול שעושה minify, לגוגל יש מודול שנקרא pagespeed שעושה את זה בנוסף לעוד כמה דברים:
https://developers.google.com/speed/pagespeed/module/download
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
COM64לא בפורום כעת ת.הצטרפות: 09/07/2003 · הודעות: 1608 · מיקום: ראשל"צ
 

הודעה פורסם: 15/09/2015 - 14:34
נושא ההודעה:

תודה רבה.
התקנתי את php-apc ואת התוסף של גוגל. אחרי מספר שעות נראה שיפור קטן.

האם כדאי להשתמש רק באחד מהם? נראה ששניהם מבצעים Chach כך שנראה לי שתתכן פגיעה בביצועים בגלל הסיבה הזו.

בנוסף, התחלתי לקרא גם עם Zend Opcache, יש לך הכרות עם הרכיב הזה?

_________________
איזי גולדנברג
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
eאורח · ·
 

הודעה פורסם: 15/09/2015 - 17:32
נושא ההודעה:

Zend Opcache חדש יותר ומחליף את ה-php-apc, שניהם עושים בדיוק אותו דבר וזה להאיץ את הריצה של php על ידי caching של קבצי ה-php אחרי שהם עוברים "קומפילציה".
התוסף של גוגל עושה דברים אחרים לגמרי, למה אתה חושב שהוא מבצע caching? בכל מקרה הצעתי אותו כי חיפשת module שיעשה לך minify, אתה אמור לראות מיידית אם הוא מבצע את העבודה שלו או לא.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
רם אוןאורח · ·
 

הודעה פורסם: 16/09/2015 - 15:40
נושא ההודעה: כיוונון של mysql נעשה בהתאם לשימוש שבו

מבנה הטבלאות, מספר הטבלאות, היחס בין כתיבה לקריאה, כולם משפיעים על הביצועים.

ישנו תסריט perl:
http://mysqltuner.com/

שיבדוק את קבצי היומן אחרי 24 שעות פעילות ויתן לך המלצות לשיפור הביצועים.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צב נינגהאורח · ·
 

הודעה פורסם: 24/09/2015 - 15:29
נושא ההודעה: ...

מה סוג הטבלאות?

תעביר את הטבלאות ל-innodb ותגדיר ב-My.cnf את הערך innodb_buffer_pool לכמה שיותר גבוהה. כך תעביר את הפעילות ל-RAM.

ה-Minify הוא לא מה שיקצר לך את זמני הטעינה, במקום זאת,
תריץ
strace -s 3000 -r -o path/to/output php file.php
ותעלה לכאן את הפלט, כך נוכל לדעת ממה נובעת האיטיות/אם יש שאילתא כבדה.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
COM64לא בפורום כעת ת.הצטרפות: 09/07/2003 · הודעות: 1608 · מיקום: ראשל"צ
 

הודעה פורסם: 28/09/2015 - 12:59
נושא ההודעה:

רם און: אני אבדוק את מה שהצעת על שרת ניסוי.

צב נינגה: לגבי סוג הטבלאות, זו התקנה סטנדרטית של דביאן ועליה Joomla. איך אני בודק את סוג הטבלאות?

אני לא מוצא באף קובץ את המשתנה innodb_buffer_pool. פשוט להוסיף אותו לקובץ my.cnf?

ה-Minify משפיע על הציון שגוגל נותן לעמודים, זו הסיבה שאני מעוניין לבצע את זה.
לדעתי בעיית הביצועים נובעת בעיקר מגישה איטית לדיסקים של השרת המארח ולכן אני מחפש דרכים להשתמש יותר בזיכרון.

לגבי הבדיקה האחרונה, אני מניח שאת php file.php אני צריך לכתוב? יש המלצות לשאילתות מוכנות שמבצעות בדיקות מסוימות? האם להריץ משורת הפקודה את אחד מקבצי ה-php של ג'ומלה?

תודה

_________________
איזי גולדנברג
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. COM64
  2. אורח [e]
  3. COM64
  4. אורח
  5. אורח [e]
  6. אורח [e]
  7. COM64
  8. אורח [e]
  9. אורח [רם און]
  10. אורח [צב נינגה]
  11. COM64