שלח תשובה

זירת השאלות

615
צפיות
12
תשובות

בעית עומס על שרת MS SQL

,‏ 22 ביוני, 2004

לפני כמה ימים התקשרו אלי מחברת האיחסון, ואמרו לי שהאתר שלי, סופר סקר, מעמיס על שרת ה- SQL שלהם.
אז התחלתי לעבור על הקוד, ולראות איפה לא נסגרים חיבורים, איפה אפשר לחסוך בשאילתה, איפה אפשר במקום כוכבית (*) לרשום שדות ספציפיים, איפה עדיין לא עברתי ל- GetRows ועוד.
בקיצור כלום לא עזר ועדיין יש עומס עצום על שרת ה- SQL שלהם.
יש להם שרת XEON שני מעבדים, ו- 2GB זיכרון פנימי.
הם טוענים, שברגע שהם מכבים את האפליקצייה שלי (האתר שלי) השימוש ב- CPU (מעבד) הוא 1%-15%, וברגע שהאפליקצייה שלי פועלת, השימוש ב- CPU הוא 85%-100%.
הגעתי למסכנה שהקוד תקין, יעיל, ומהיר, ושאני לא אשם שיש לי 100,000 צפיות ביום, ושיש 70,000 צפיות בסקרים המקושרים מאתרים אחרים ביום.

מה אתם מציעים לי לעשות?
אולי יש לכם הצעות לייעול הקוד?
אולי יש לכם להיכן להגיש שרת SQL פרטי?

תודה מראש!

תגיות:

12 תשובות

  1. ניר טייב הגיב:

    נסה לבדוק איפה אתה יכול להשתמש
    ב-getString זה יכול לייעל לך את העבודה
    כמו כן תבדוק כמה זמן לוקח לכל שאילתא שלך להתממש (ב-query analyzer אאפשר לראות זאת)
    ודא שהמס דשלך בנוי נכון ויעיל

    כמו כן שחיבורים נסגרים בזמן

  2. אופס – הנה השאלה
    האם מותר לעשות ככה?


    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 שבאותו משתנה לפני זה?

  3. ניר טייב הגיב:

    לדעתי צריך לסגור קודם
    אבל למה לא לנסות ?

  4. לא חושב…
    אתה לא משאיר אותו פתוח אז מה זה משנה?

  5. OK תודה, סגירת החיבור עזרה. ל- FAQ.
    זה בדוק!
    לאחר שהעלתי לשרת את הקבצים המעודכנים עם סגירת ה- Recordsetים האלה האתר החל לטוס!
    לפי דעתי כדאי להכניס את זה ל-FAQ.

  6. לא קשור למאמר
    אני כל החיים שלי חשבתי שאם לא עושים Open אז לא צריך לעשות Close.
    אני בטוח שיש עוד שחושבים ככה.

שלח תשובה