أنا عامل تطبيق بـ Node.js وربطه بقاعدة بيانات PostgreSQL باستعمال مكتبة pg (node-postgres).
كل ما يجي طلب (Request) للسيرفر، يروح يستعلم عن بيانات معينة من قاعدة البيانات ويرجعها لليوزر.
الأبلكيشن في الأول بيشتغل طلقة وسريع جداً، بس أول ما يجي عليه ضغط شوية أو عدد مستخدمين يدخلوا في نفس الوقت، السيرفر بيضرب تماماً وقاعدة البيانات بترفض أي طلب جديد وتطلعلي الرسالة دي:
error: sorry, too many clients already
at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:287:98)
ولازم أعمل ريستارت للسيرفر عشان يرجع يشتغل تاني، وبعدين يقع تاني بنفس الطريقة! مش فاهم ليه الاتصالات بتخلص بسرعة كده مع إن الكود بسيط.
const { Client } = require('pg');
const express = require('express');
const app = express();
app.get('/api/users', async (req, res) => {
// السطر المشتبه فيه: إنشاء اتصال جديد تماماً مع كل Request بيجي للسيرفر
const client = new Client({
connectionString: process.env.DATABASE_URL
});
try {
await client.connect();
const result = await client.query('SELECT * FROM users');
res.json(result.rows);
// السطر المفقود هنا: نسيان قفل الاتصال بعد انتهاء الطلب!
} catch (error) {
console.error(error);
res.status(500).send("حصلت مشكلة في الخادم");
}
});
app.listen(3000, () => console.log('Server is running'));
التعليقات (1)
سجّل دخولك لإضافة تعليق
تسجيل الدخول