615
צפיות
צפיות
12
תשובות
תשובות
בעית עומס על שרת MS SQL
לפני כמה ימים התקשרו אלי מחברת האיחסון, ואמרו לי שהאתר שלי,
אז התחלתי לעבור על הקוד, ולראות איפה לא נסגרים חיבורים, איפה אפשר לחסוך בשאילתה, איפה אפשר במקום כוכבית (*) לרשום שדות ספציפיים, איפה עדיין לא עברתי ל- GetRows ועוד.
בקיצור כלום לא עזר ועדיין יש עומס עצום על שרת ה- SQL שלהם.
יש להם שרת XEON שני מעבדים, ו- 2GB זיכרון פנימי.
הם טוענים, שברגע שהם מכבים את האפליקצייה שלי (האתר שלי) השימוש ב- CPU (מעבד) הוא 1%-15%, וברגע שהאפליקצייה שלי פועלת, השימוש ב- CPU הוא 85%-100%.
הגעתי למסכנה שהקוד תקין, יעיל, ומהיר, ושאני לא אשם שיש לי 100,000 צפיות ביום, ושיש 70,000 צפיות בסקרים המקושרים מאתרים אחרים ביום.
מה אתם מציעים לי לעשות?
אולי יש לכם הצעות לייעול הקוד?
אולי יש לכם להיכן להגיש שרת SQL פרטי?
תודה מראש!
12 תשובות
הבעיה בקוד ב99%
להיכן להגיש = מהיכן להשיג
נסה לבדוק איפה אתה יכול להשתמש
ב-getString זה יכול לייעל לך את העבודה
כמו כן תבדוק כמה זמן לוקח לכל שאילתא שלך להתממש (ב-query analyzer אאפשר לראות זאת)
ודא שהמס דשלך בנוי נכון ויעיל
כמו כן שחיבורים נסגרים בזמן
שאלה
אופס – הנה השאלה
האם מותר לעשות ככה?
set rs=adoCon.execute("select id from tbl_a")
x=rs.fields("id").value
set rs=adoCon.execute("select * from tbl_b")
כלומר, האם מותר לעשות set לאובייקט recordset לאותו משתנה, בלי לסגור את ה recordset שבאותו משתנה לפני זה?
לדעתי צריך לסגור קודם
אבל למה לא לנסות ?
לא חושב…
אתה לא משאיר אותו פתוח אז מה זה משנה?
OK תודה, סגירת החיבור עזרה. ל- FAQ.
זה בדוק!
לאחר שהעלתי לשרת את הקבצים המעודכנים עם סגירת ה- Recordsetים האלה האתר החל לטוס!
לפי דעתי כדאי להכניס את זה ל-FAQ.
יש על זה מאמר באתר.
לא קשור למאמר
אני כל החיים שלי חשבתי שאם לא עושים Open אז לא צריך לעשות Close.
אני בטוח שיש עוד שחושבים ככה.
חשוב גם לאפס set rs = nothing