פסקי זמן של פרוקסי ב־curl: מציאת השלב שנכשל
הפרידו בין החיבור לפרוקסי, משא ומתן על מנהרה, TLS ותגובה שנתקעת, כדי שמגבלות הזמן של curl יסייעו באבחון.
מצאו את הפעולה האחרונה שהושלמה בפלט המפורט של curl. ״החיבור לפרוקסי נוצר, אבל אין תשובת CONNECT״ מצמצם את הבעיה הרבה יותר מ״תם זמן ההמתנה לפרוקסי״.
השתמשו בבקשה מוגבלת בזמן והחליפו את הדוגמה המקומית בפרוקסי HTTP שלכם; ברשימת שרתי פרוקסי HTTP אפשר למצוא נקודות קצה חלופיות להשוואה:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/--connect-timeout 5 מקצה תקציב משותף אחד להקמת החיבור, כולל בירורים ולחיצות יד רלוונטיים; הוא אינו מקצה חמש שניות לכל שלב. --max-time 15 מגביל את הפעולה כולה, כולל זמן ההעברה לאחר ההקמה.
| היכן ההתקדמות נעצרת | מה לבדוק בהמשך |
|---|---|
| אין חיבור לפרוקסי | פתרון שם המארח של הפרוקסי, היציאה המאזינה, ניתוב ומדיניות חומת האש. |
| הפרוקסי מחובר; אין תשובה למנהרה | עומס הפרוקסי, משא ומתן לאימות, מדיניות גישה ונגישות היעד מהפרוקסי. |
| המנהרה אושרה; TLS לא הושלם | נגישות היעד, משא ומתן TLS ויירוט מנוהל של התעבורה. |
| כותרות היעד הגיעו; גוף התגובה נעצר | התנהגות ההעברה של שרת המקור, אגירה במתווכים והאפשרות שהיישום שקט במכוון. |
לסדר לחיצות היד ראו כיצד CONNECT נושא HTTPS. עצירה סמוך לתקציב החיבור מרמזת על ההקמה; עצירה מאוחרת יותר במגבלה הכוללת מרמזת על העברה שלא הושלמה. בדקו את הרצף יחד עם הזמנים — הזמן לבדו אינו מזהה את הרכיב. נוסח היומנים משתנה בין גרסאות בנייה של curl, ויציאת TCP פתוחה אינה מוכיחה ש־CONNECT עובד.
השאירו צד אחד קבוע
השוו את אותו יעד דרך נתיב ישיר מותר:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/לאחר מכן השוו יעד לא מזיק אחר דרך אותו פרוקסי. אם רק יעד אחד נכשל, בדקו את הנתיב או מדיניות הגישה שלו. אם כולם נעצרים באותו שלב הקמה, בדקו את הנתיב המשותף דרך הפרוקסי. שמרו שעת התחלה, נקודת קצה, יעד ושלב אחרון שהושלם; הסירו פרטי גישה, אסימונים, עוגיות ושמות פרטיים לפני שיתוף יומנים.
כשהחיבור נשאר פתוח ללא התקדמות מועילה
העברת קובץ עשויה לדרוש סף מהירות נמוכה בנוסף למגבלות ההקמה והזמן הכולל:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 60 --speed-limit 100 --speed-time 20 https://example.com/הדבר מפסיק את הפעולה אם קצב ההעברה המתמשך נשאר מתחת ל־100 בתים בשנייה במשך 20 שניות, תוך שמירה על מגבלה כוללת של 60 שניות. בחרו ערכים בהתאם לעומס העבודה. זרם אירועים יכול להיות תקין בזמן שתיקות ארוכות, ולכן כלל להורדות עלול להפסיקו בטעות.
הגדלת כל המגבלות דוחה את התסמין. ניסיונות חוזרים ומיידיים עלולים להוסיף חיבורים לנתיב עמוס. אבחנו באמצעות כמה השוואות מתוכננות; מדיניות ניסיונות חוזרים עתידית של היישום זקוקה לתקציב כולל משלה ולשיקול אם בטוח לחזור על הפעולה.