דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. רשתות
  3. מה יכול להיות סיבה לשגיאה 1200 חוזרת ונשנית באתר שמוגש דרך קלאודפלייר?

מה יכול להיות סיבה לשגיאה 1200 חוזרת ונשנית באתר שמוגש דרך קלאודפלייר?

מתוזמן נעוץ נעול הועבר רשתות
7 פוסטים 3 כותבים 36 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ע מנותק
    ע מנותק
    ע"ה דכו"ע
    כתב נערך לאחרונה על ידי
    #1

    אני העברתי בימים האחרונים אתר שמשתמש בSSE (לשליחת מתמשכת של מידע מהשרת) דרך פרוקסי של קלאודפלייר, ונהיה אחרי כמה שעות המון פעמים שגיאה 1200 בכניסה, שזה אומר על פי התיעוד שיש מידי הרבה בקשות שמחכות בתור מהפרוקסי לשרת המקורי.

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

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

    כמו כן לא מצאתי שום אזכור ברשת על צורך בהחרגת SSE מהreverse proxy של קלאודפלייר.

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

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

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

    החיבור מוגדר לhttp2 או 3 מקלאודפלייר לשרת.

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

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid
      ניהול
      כתב נערך לאחרונה על ידי dovid
      #2

      אכן, לא נראה שעצם SSE אמור לסבול מבעיה בCF, אבל יכול להיות שספציפית במקרה שלך החיבור ביניהם בעייתי.
      אם תרצה בכך, אולי יעזור שתסביר לנו רקע מה אתה משתמש ואיך בSSE, כלומר או קוד של צד השרת או תיאור של מה שהוא עושה.
      מציין בדבריך שני נקודות (כנראה נובעות מאי שימת לב שהקוראים לא בפרטי העניין):
      א. "המון פעמים שגיאה 1200 בכניסה"
      מה הכונה כניסה?
      ב. "השאלה למה זה קורה, השרת לא איטי בכלל לבקשות הרגילות של הקבצים שמגיעות אליו, בטח לא אחרי שכמעט כל הקבצים כבר מוגשים מהמטמון של קלאודפלייר."
      מי דיבר על קבצים? מה פתאום מה שחוזר בSSE שזה בקשה אין סופית, יכול להיות מאוחזר ממטמון?

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      תגובה 1 תגובה אחרונה
      1
      • ע מנותק
        ע מנותק
        ע"ה דכו"ע
        כתב נערך לאחרונה על ידי
        #3

        האתר הוא בעצם הפרוייקט של נטפרי - הערוץ https://github.com/NetFree-Community/TheChannel הSSE שם נועד כדי לשלוח מידע בזמן אמת למשתמש על הודעות חדשות ועל אימוג'ים שנוספו ע"י המשתמשים.

        בעיקרון מאותו דומיין מוגשים גם הקבצים הסטטיים של הצד לקוח, גם התוכן של הערוץ שמוגש כjson בנתיב API, גם המדיה, וגם החיבור SSE (מה שניסיתי להפריד זה את הSSE לדומיין אחד וכל שאר התכנים נשארו בדומיין הראשי).

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

        dovidD תגובה 1 תגובה אחרונה
        0
        • קינג קומפיוטרק מנותק
          קינג קומפיוטרק מנותק
          קינג קומפיוטר
          כתב נערך לאחרונה על ידי
          #4

          אולי יש קשר בין הדברים?
          https://tchumim.com/post/170422

          ע תגובה 1 תגובה אחרונה
          0
          • קינג קומפיוטרק קינג קומפיוטר

            אולי יש קשר בין הדברים?
            https://tchumim.com/post/170422

            ע מנותק
            ע מנותק
            ע"ה דכו"ע
            כתב נערך לאחרונה על ידי
            #5

            @קינג-קומפיוטר כתב במה יכול להיות סיבה לשגיאה 1200 חוזרת ונשנית באתר שמוגש דרך קלאודפלייר?:

            אולי יש קשר בין הדברים?
            https://tchumim.com/post/170422

            החיבור שלי לSSE כן פתוח בנטפרי, רק שאחרי כמה דקות מקבלים שגיאה 1200

            תגובה 1 תגובה אחרונה
            0
            • ע ע"ה דכו"ע

              האתר הוא בעצם הפרוייקט של נטפרי - הערוץ https://github.com/NetFree-Community/TheChannel הSSE שם נועד כדי לשלוח מידע בזמן אמת למשתמש על הודעות חדשות ועל אימוג'ים שנוספו ע"י המשתמשים.

              בעיקרון מאותו דומיין מוגשים גם הקבצים הסטטיים של הצד לקוח, גם התוכן של הערוץ שמוגש כjson בנתיב API, גם המדיה, וגם החיבור SSE (מה שניסיתי להפריד זה את הSSE לדומיין אחד וכל שאר התכנים נשארו בדומיין הראשי).

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

              dovidD מנותק
              dovidD מנותק
              dovid
              ניהול
              כתב נערך לאחרונה על ידי
              #6

              @ע-ה-דכו-ע כתב במה יכול להיות סיבה לשגיאה 1200 חוזרת ונשנית באתר שמוגש דרך קלאודפלייר?:

              האתר הוא בעצם הפרוייקט של נטפרי - הערוץ https://github.com/NetFree-Community/TheChannel הSSE שם נועד כדי לשלוח מידע בזמן אמת למשתמש על הודעות חדשות ועל אימוג'ים שנוספו ע"י המשתמשים.

              תוכל לכוון אותי, איפה הקוד שמגיב לבקשת הSSE?

              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
              תגובה 1 תגובה אחרונה
              0
              • ע מנותק
                ע מנותק
                ע"ה דכו"ע
                כתב נערך לאחרונה על ידי
                #7

                בקוד המקורי זה כאן

                אני שיניתי קצת את הקוד הזה, אז אני מצרף את הקובץ המלא

                package main
                
                import (
                	"context"
                	"encoding/json"
                	"net/http"
                	"sync"
                	"sync/atomic"
                	"time"
                )
                
                var openSSEConnections = atomic.Int64{}
                var peakSSEConnections = &PeakSSEConnections{}
                var peakMu = sync.Mutex{}
                
                type PeakSSEConnections struct {
                	Value     int64     `json:"value" redis:"value"`
                	Timestamp time.Time `json:"timestamp" redis:"timestamp"`
                }
                type Statistics struct {
                	Data   []int64  `json:"date"`
                	Labels []string `json:"labels"`
                }
                
                func init() {
                	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
                	defer cancel()
                
                	p, _ := dbGetPeakSSEConnections(ctx)
                	peakMu.Lock()
                	defer peakMu.Unlock()
                	peakSSEConnections = p
                }
                
                func statLogger() {
                	var old int64
                	for {
                		new := openSSEConnections.Load()
                		if old != new {
                			dbSaveSSEStatistics(new)
                			old = new
                		}
                		time.Sleep(5 * time.Minute)
                	}
                }
                
                func increaseCounterSSE() {
                	new := openSSEConnections.Add(1)
                
                	peakMu.Lock()
                	defer peakMu.Unlock()
                	if new > peakSSEConnections.Value {
                		peakSSEConnections.Value = new
                		peakSSEConnections.Timestamp = time.Now()
                		peak := *peakSSEConnections
                		go dbSavePeakSSEConnections(&peak)
                	}
                }
                
                func decreaseCounterSSE() {
                	openSSEConnections.Add(-1)
                }
                
                func getStatistics(w http.ResponseWriter, r *http.Request) {
                	ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
                	defer cancel()
                
                	amount, err := dbGetUsersAmount(ctx)
                	if err != nil {
                		http.Error(w, "error", http.StatusInternalServerError)
                		return
                	}
                
                	s, err := dbGetSSEStatistics(ctx, 1000)
                	if err != nil {
                		http.Error(w, "error", http.StatusInternalServerError)
                		return
                	}
                
                	peakMu.Lock()
                	defer peakMu.Unlock()
                
                	response := struct {
                		UsersAmount           int64               `json:"usersAmount"`
                		ConnectedUsersAmount  int64               `json:"connectedUsersAmount"`
                		PeakSSEConnections    *PeakSSEConnections `json:"peakSSEConnections"`
                		ConnectionsStatistics Statistics          `json:"connectionsStatistics"`
                	}{
                		UsersAmount:           amount,
                		ConnectedUsersAmount:  openSSEConnections.Load(),
                		PeakSSEConnections:    peakSSEConnections,
                		ConnectionsStatistics: *s,
                	}
                
                	w.Header().Set("Content-Type", "application/json")
                	json.NewEncoder(w).Encode(response)
                }
                
                func resetStatistics(w http.ResponseWriter, r *http.Request) {
                	peakMu.Lock()
                	defer peakMu.Unlock()
                	peakSSEConnections.Value = 0
                	peakSSEConnections.Timestamp = time.Time{}
                	p := *peakSSEConnections
                	go dbSavePeakSSEConnections(&p)
                
                	var response Response
                	response.Success = true
                	json.NewEncoder(w).Encode(response)
                }
                
                
                
                תגובה 1 תגובה אחרונה
                0
                תגובה
                • תגובה כנושא
                התחברו כדי לפרסם תגובה
                • מהישן לחדש
                • מהחדש לישן
                • הכי הרבה הצבעות


                בא תתחבר לדף היומי!
                • התחברות

                • אין לך חשבון עדיין? הרשמה

                • התחברו או הירשמו כדי לחפש.
                • פוסט ראשון
                  פוסט אחרון
                0
                • דף הבית
                • קטגוריות
                • פוסטים אחרונים
                • משתמשים
                • חיפוש
                • חוקי הפורום