ניפוי באגים ופתרון בעיות בשרתי proxy של Node.js

אתם צופים במסמכי התיעוד של Apigee Edge.
אפשר לעבור אל מסמכי התיעוד של Apigee X.
מידע

מומלץ לוודא שכל קוד Node.js שמוסיפים לשרת proxy פועל לפני שפורסים אותו ב-Edge. במאמר הזה נסביר איך לנפות באגים בשרתי proxy שכוללים אפליקציות Node.js ולפתור בעיות בהם אחרי הפריסה.

הגדלת גודל מאגר החיבורים כדי לשפר את הביצועים

אם אתם מבחינים בביצועים איטיים, יכול להיות שתוכלו לפתור את הבעיה על ידי הגדלת גודל מאגר החיבורים של Node.js שמוגדר כברירת מחדל באמצעות maxSockets, או על ידי השבתה של מאגר החיבורים לחלוטין. מידע נוסף וקוד לדוגמה זמינים במאמר Node.js Performance Tips: Socket Pooling בקהילת Apigee.

צפייה ביומני Node.js

כדי לראות מידע ביומן על אפליקציית Node.js:

  1. בדף הראשי של שרתי proxy של API, לוחצים על ה-proxy שרוצים להציג.
  2. בדף הסיכום של ה-proxy שנבחר, לוחצים על Node.js Logs בצד שמאל של סרגל הכלים.

בדף Logs (יומנים), אפשר לבחור טווח זמן של יומנים לצפייה, כמו שמוצג בהמשך. ביומנים מתועדות קריאות לשיטות HTTP, הצלחה או כישלון של קריאות, הודעות console.log וכו'. מזינים מחרוזת חיפוש בשדה החיפוש כדי להציג את כל הרשומות ביומן שמכילות את המחרוזת.

שימוש בכלי המעקב

כלי המעקב שימושי לניפוי באגים כללי ב-proxy. מידע מפורט על השימוש בכלי המעקב זמין במאמר שימוש בכלי המעקב.

הדפסת פלט של המסוף

אפשר להטמיע הצהרות console.log בקוד Node.js ולראות את הפלט בכלי המעקב. לדוגמה, הפקודה הבאה מדפיסה את הערך של המשתנה config.user:

console.log('Logging in as %s', config.username);

כדי לראות את הפלט של הודעות console.log בכלי המעקב, קוראים ל-API בכלי המעקב ולוחצים על פלט מכל הטרנזקציות כדי לפתוח את חלונית הפלט:

בהנחה שהרצתם את הקוד הבא…

var http = require('http');

console.log('node.js application starting...');

var svr = http.createServer(function(req, resp) {
    resp.end('Hello, World!');
});

svr.listen(9000, function() {
    console.log('Node HTTP server is listening');
});

‫... ההצהרות של המסוף מופיעות בחלונית:

הגדרת פסק זמן ליעד ב-Nginx

אם אתם משתמשים ב-Nginx כשרת proxy ומוצגות שגיאות מסוג Bad Gateway, נסו להגדיל את הגדרת הזמן הקצוב לתפוגה של שרת ה-proxy של Nginx, כמו שמוסבר כאן:

לדוגמה:

proxy_connect_timeout       60;
proxy_read_timeout          120;

הגדרות הזמן הקצוב לתפוגה האידיאליות תלויות במשך הזמן שלוקח לשרת להגיב. לדוגמה, יכול להיות שזמן קצוב לקריאה של 45-60 שניות יהיה אידיאלי כדי לספק חיץ סביר.

הגדרת פסק זמן ליעד ב-Apigee

אפשר גם להגדיר את ערכי ברירת המחדל של פסק הזמן ב-Apigee ברכיב HttpTargetConnection ב-TargetEndpoint. ערכי ברירת המחדל הם:

connect.timeout.millis - 60 seconds
io.timeout.millis - 120 seconds
<HTTPTargetConnection>
    <Properties>
        <Property name="connect.timeout.millis">5000</Property>
        <Property name="io.timeout.millis">5000</Property>
    </Properties>
    <URL>http://www.google.com</URL>
</HTTPTargetConnection>

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

אפשר לקבל מידע נוסף

מידע נוסף על ניפוי באגים:

השלבים הבאים

במאמר הסבר על התמיכה של Edge במודולים של Node.js מופיע מידע על התמיכה במודולים של Node.js ב-Apigee Edge, כולל מידע על התמיכה ב-HTTP/HTTPS, ב-TLS ובנושאים מתקדמים אחרים.