אולי חלק מנידון זה שייך לסעיף חומרה ולא לתכנות, אבל אני צריך את עזרת המתכנתים ולא כ"כ את הטכנאים...
אני משתמש בשרת לינוקס על AWS והתקנתי עליו LAMP.
אני מתכנת מערכות טלפוניות באמצעות API עם ימות המשיח.
רוב המערכות שלי בדר"כ זה PHP וMYSQL שמותקן על השרת והגישה עליו היא
ב localhost.
ב"ה בדר"כ לא חוויתי תקלות ואני מסתפק בשרת t3.small של 2 מעבדים ו 2 ראם.
בקמפיין של עטרת שלמה היה ב"ה עומס גדול, בפרט בערב, והתחלתי לחוש שהשרת שלי נושם עמוק מידי, לקח לו הרבה זמן תגובה.
מה שעשיתי למעשה, זה שהתחלתי לחלק את השלוחות לשרת אחר שהיה לי מוכן (שלוחת אידיש עבדה יותר מהר מי ששם לב, כי זה העברתי מיד על שרת נפרד, והתנועה בו הייתה דלילה יותר) ולאחר מכן הרמתי עוד שלושה העתקים של השרת ויצרתי שלוחה רנדומאלית בימות המשיח שתפנה כל פעם לשלוחה אחרת, שכל שלוחה מחוברת לשרת אחר.

למעשה שלוחת שמיעת מצב הקמפיין לא היה מחובר לד"ב, אלא חיבור ברגע אמת לשרתי צ'רידי לשליפות מצב הקמפיין. (ע"י file_get_contents)
בעת העומסים של הקמפיין הCPU היה בסך הכל בסביבות ה20 ,כאשר רובו הוא של httpd השרת אפאצ'י.
בדר"כ עיקר הCPU הוא מה SQL.
ובשרתים החדשים שהרמתי לקמפיין ג"כ הCPU נע בסביבות 10 רובו של httpd.
יש לי כמה נקודות שברצוני להבין.
א. נראה שהבעיה לא הייתה ביכולת המעבד כי כמו שכתבתי הCPU היה נמוך.
א"כ מה כן הבעיה?
ב. אם אני רוצה לאזן עומסין בין כמה שרתים, איך עושים את זה, והשאלה מורכבת בעיקר לגבי מערכות שכן צורכות SQL ואני צריך ד"ב אחיד, איך עושים בצורה שלא יאט את המהירות (האם יש מצב להגיע לאותו מהירות כמו בlocalhost כאדר הד"ב בשרת נפרד?)
ואיך זה מבחינת העלאת הקבצים לשרתים? איך יוצרים קבוצת שרתים שכולם מתעדכנים בקבצים חדשים? ואיך יוצרים IP שמחולק בצורה אוטומטית לפי עומסים, בין השרתים?
או אולי לבודד מראש כל מערכת לשרת/ים נפרד/ים, לפי העומס הצפוי להיות במערכת זו? א"כ מה לעשות לגבי המערכות הקבועות?
או להישאר עם שלוחה רנדומאלית בימות, שהיא תווסת את העומסים.
כנראה יש עוד נקודות בנושא שעדיין לא בראש לשאול אותם.
אך בקיצור הייתי שמח לקצת הדרכה להתמודד עם עומסים ושרתים בצורה נכונה ומתוכננת מראש.
בנוסף ישנם דברים שהייתי יכול לעשות ע"י SQL, לדוגמה, המערכת הייתה שולחת את מספר הטלפון לבדיקה מול צ'רידי האם קיים מתרים על מספר זה, וא"כ היה משמיע לו תפריט לשמיעת מצב התרומות שנתרמו על ידך, אחרת זה היה משמיע, לחיפוש מתרים ע"י הקשת המספר שלו הקש שתיים, וכו'.
כעת זה היה בנוי שהכל בוצע ישירות מול צ'רידי בכל שלב במערכת.
והאמת שהעדפתי להמנע מSQL כי חשוב לי מאוד שזה לא יקרוס.
השאלה היא האם כן היה עדיף לעשות אצלי בSQL טבלה של המתרימים, והמערכת הייתה בודקת אצלי האם קיים מתרים למספר הטלפון, ולהציע תפריט לפי זה.
ואז הייתי עושה סקריפט שפעם בעשר דקות / חצי שעה זה היה שולף את נתוני המתרימים מצ'רידי ומעדכן אותם בטבלה.
במקרה זה הייתי מעמיס יותר על הSQL ופחות על שליפת נתונים חיצוניים על ידי file_get_contents.
והאמת שניתן אפילו לעשות זאת לגבי התרומות עצמם, טבלת מצב הקמפיין שמתעדכן כל דקה, והמערכת תשלוף את הנתונים רק מהטבלה ולא מצ'רידי בכל שיחה.
אשמח לחוות הדעת של המומחים כאן, איך ומה ניתן לעשות לגבי הנ"ל.
תודה