मैं अचानक यह त्रुटि प्राप्त कर रहा हूं जब या तो वेबसाइट का उपयोग करने की कोशिश कर रहा है जो पोस्टग्रैस्कल डेटाबेस का उपयोग करता है, या यहां तक कि जब psql उपयोगिता या pgadmin3 का उपयोग कर रहा है।
मेरा डेटाबेस 150 अधिकतम कनेक्शन संभालने के लिए सेट है:
# SHOW max_connections;
max_connections
-----------------
150
(1 row)
Ubuntu सर्वर को रिबूट करने के बाद जो मेरी वेबसाइट पर है (जो वास्तव में कनेक्शन का उपयोग करने वाली एकमात्र चीज है), मुझे लगता है कि कनेक्शन की वर्तमान राशि 140 है:
# select count(*) from pg_stat_activity;
count
-------
140
(1 row)
मुझे समझ नहीं आ रहा है कि मेरे सर्वर को रिबूट करने के बाद अचानक कितने कनेक्शन। तो मैं postgresql गतिविधि की जाँच करें:
# SELECT * FROM pg_stat_activity;
और मैं एक 100 से अधिक स्तंभों को उसी सटीक क्वेरी के साथ देखता हूं जो इस तरह दिखता है:
SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1
इससे भी अधिक महत्वपूर्ण यह है कि उन सभी का ग्राहक पता (मेरा वेब सर्वर) समान है।
यह वेब सर्वर 50 के कनेक्शन पूल के साथ रेल पर रूबी का उपयोग कर रहा है। भले ही 50 का कनेक्शन पूल हो, यात्री प्रक्रिया / प्रीफ़ॉर्क एपाचे कॉन्फ़िगरेशन एकल-थ्रेडेड है और इसलिए प्रत्येक प्रक्रिया 50 थ्रेड और 50 डेटाबेस कनेक्शन को स्पॉन नहीं कर सकती है। सिस्टम रिबूट के बाद ऐसा अधिक हुआ है, जिसने सभी उपयोगकर्ताओं को मेरे वेब सर्वर से बाहर कर दिया। संभावना यह है कि डेटाबेस सर्वर पर postgresql वेब सर्वर रिबूट के बारे में पता नहीं है और अभी भी इन प्रश्नों को निष्पादित करने की कोशिश कर रहा है।
क्रेग की टिप्पणियों का जवाब देने के लिए, वेटिंग कॉलम के तहत यह 'एफ' अक्षर को दर्शाता है। ऐसा प्रतीत होता है कि क्वेरी अभी भी निष्पादित हो रही है और अभी तक लॉक जारी नहीं किया गया है। जैसा कि मैंने पहले कहा, यह कितना अजीब है कि अचानक मिली-जुली स्थिति के भीतर मिलीसेकंड के भीतर एक-दूसरे के समान 100 से अधिक प्रश्न अचानक सामने आए। यही मेरे लिए रहस्य है:
mydb=# SELECT * FROM pg_stat_activity;
datid | datname | procpid | usesysid | usename | current_query | waiting | xact_start | query_start | backend_start | client_addr | client_port
--------+----------+---------+----------+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+-------------------------------+-------------------------------+-------------------------------+----------------+-------------
464875 | mydb | 4992 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:48.437081-04 | 2014-06-28 22:46:48.437081-04 | 2014-06-28 22:46:44.089764-04 | 192.111.11.111 | 37166
464875 | mydb | 4993 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:48.497764-04 | 2014-06-28 22:46:48.497764-04 | 2014-06-28 22:46:44.277856-04 | 192.111.11.111 | 37167
464875 | mydb | 4994 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:48.504425-04 | 2014-06-28 22:46:48.504425-04 | 2014-06-28 22:46:44.485269-04 | 192.111.11.111 | 37168
464875 | mydb | 4996 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:48.482695-04 | 2014-06-28 22:46:48.482695-04 | 2014-06-28 22:46:44.688203-04 | 192.111.11.111 | 37169
464875 | mydb | 4998 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:48.432836-04 | 2014-06-28 22:46:48.432836-04 | 2014-06-28 22:46:44.703883-04 | 192.111.11.111 | 37170
-- many more
464875 | mydb | 5052 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.584386-04 | 2014-06-28 22:46:59.584386-04 | 2014-06-28 22:46:51.85682-04 | 192.111.11.111 | 37360
464875 | mydb | 5053 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.506483-04 | 2014-06-28 22:46:59.506483-04 | 2014-06-28 22:46:52.083316-04 | 192.111.11.111 | 37367
464875 | mydb | 8958 | 16387 | myuser | <IDLE> | f | | 2014-06-29 00:05:06.735249-04 | 2014-06-27 16:34:39.307312-04 | 192.111.11.111 | 52759
464875 | mydb | 5054 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.52573-04 | 2014-06-28 22:46:59.52573-04 | 2014-06-28 22:46:52.285867-04 | 192.111.11.111 | 37371
464875 | mydb | 5055 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.530804-04 | 2014-06-28 22:46:59.530804-04 | 2014-06-28 22:46:52.303562-04 | 192.111.11.111 | 37372
464875 | mydb | 5056 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.572198-04 | 2014-06-28 22:46:59.572198-04 | 2014-06-28 22:46:52.31447-04 | 192.111.11.111 | 37373
464875 | mydb | 5057 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.872037-04 | 2014-06-28 22:46:59.872037-04 | 2014-06-28 22:46:52.323721-04 | 192.111.11.111 | 37374
464875 | mydb | 5058 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.961803-04 | 2014-06-28 22:46:59.961803-04 | 2014-06-28 22:46:52.334238-04 | 192.111.11.111 | 37375
464875 | mydb | 5059 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.53713-04 | 2014-06-28 22:46:59.53713-04 | 2014-06-28 22:46:52.347227-04 | 192.111.11.111 | 37376
464875 | mydb | 5060 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:47:00.208948-04 | 2014-06-28 22:47:00.208948-04 | 2014-06-28 22:46:52.360008-04 | 192.111.11.111 | 37377
464875 | mydb | 5061 | 16387 | myuser | SELECT "reports".* FROM "reports" WHERE (("reports"."time" < '2014-06-28 13:30:42.000000' AND "reports"."unit_id" = 3192)) ORDER BY "reports"."id" DESC LIMIT 1 | f | 2014-06-28 22:46:59.938983-04 | 2014-06-28 22:46:59.938983-04 | 2014-06-28 22:46:52.369496-04 | 192.111.11.111 | 37378
top
लिए सर्वर पर जांच करने की आवश्यकता हो सकती है कि क्या ये प्रक्रियाएं व्यस्त हैं। यदि वे हैं, तो मुझे लगता है कि प्रश्नों के समाप्त होने के बाद कनेक्शन गायब हो जाना चाहिए (या वैकल्पिक रूप से, आप अभी उन्हें मार सकते हैं)। यदि वे बेकार हैं, और कनेक्शन निश्चित रूप से मर चुके हैं, तो मुझे यकीन नहीं है कि क्या हो रहा है, या अगली बार इसे कैसे रोका जाए ...
waiting
झंडे को चेक करें pg_stat_activity
, देखें कि क्या वे लॉक पर अटके हुए हैं।
SELECT * FROM pg_stat_activity;
विश्वसनीय नहीं है - पर्याप्त स्तंभ नहीं हैं। राज्य स्तंभ क्या कहता है? इस प्रश्न के लिए यह सबसे महत्वपूर्ण क्षेत्र है।
pg_stat_activity.backend_start
। वेब सर्वर रिबूट से पहले या बाद में बनाए गए ये कनेक्शन थे? यदि वे सभी नए कनेक्शन हैं, तो मुझे लगता है कि वेब सर्वर के अंत में समस्या का अर्थ है।