পোস্টগ্রিস সার্ভারে টাইমআউট সীমাবদ্ধ করা কি সম্ভব?


17

আমি আমার অ্যাপ্লিকেশনটিতে (ক্লায়েন্ট পাশ) 10 মিনিটের মধ্যে সংযোগ এবং কমান্ডের সময় নির্ধারণ করেছি।

আমার অ্যাপ্লিকেশনটি সাধারণ জিজ্ঞাসা চালায় তার চেয়ে বেশি: SELECT pg_sleep(65)

কিছু সার্ভারে এটি দুর্দান্ত কাজ করে তবে অন্যান্য সার্ভারগুলি 60 সেকেন্ডের পরে সংযোগটি বন্ধ করে দেয়।

এটি কি পোস্টগ্রিএসকিউএল সার্ভার কনফিগারেশনের কোনও ধরণের হতে পারে যা আমার ক্লায়েন্টের সেটিংসকে সময়সীমা সীমাবদ্ধ করে এবং উপেক্ষা করে?


বর্তমান সময়সীমাটি দেখতে:SHOW statement_timeout;
ব্যবহারকারীরা

উত্তর:


27

হ্যাঁ এটা সম্ভব

আছে দুই ডক্স উল্লেখ সেটিংস ( idle_in_transaction_session_timeoutসংস্করণ 9.6x কাছে নতুন)

  • statement_timeout (পূর্ণসংখ্যা)

    কমান্ডটি ক্লায়েন্টের কাছ থেকে সার্ভারে আসার সময় থেকে শুরু করে মিলিসেকেন্ডের নির্দিষ্ট সংখ্যার চেয়ে বেশি যে কোনও বিবৃতি বাতিল করুন। যদি লগ_মিনি_অরর_স্টেটমেন্টটি ERROR বা নিম্নে সেট করা থাকে তবে সময়সীমা শেষ হওয়া বিবৃতিটিও লগ করা হবে। শূন্যের একটি মান (ডিফল্ট) এটি বন্ধ করে দেয়।

    Postgresql.conf এ স্টেটমেন্ট_টাইমআউট সেট করা বাঞ্ছনীয় নয় কারণ এটি সমস্ত সেশনে প্রভাব ফেলবে।

  • idle_in_transaction_session_timeout (পূর্ণসংখ্যা)

    যে কোনও সেশনটিকে উন্মুক্ত লেনদেনের সাথে সমাপ্ত করুন যা মিলিসেকেন্ডগুলিতে নির্দিষ্ট সময়কালের চেয়ে বেশি সময় অলস থাকে। এটি সেই সেশনের অধীনে থাকা কোনও লকগুলি প্রকাশ করতে এবং সংযোগ স্লটটিকে পুনরায় ব্যবহার করার অনুমতি দেয়; এটি কেবলমাত্র এই লেনদেনের জন্য দৃশ্যমান টিপলগুলিকে শূন্য হতে দেয়। এই সম্পর্কে আরও তথ্যের জন্য বিভাগ 24.1 দেখুন।

    0 এর ডিফল্ট মানটি এই বৈশিষ্ট্যটি অক্ষম করে।

আপনি বিনোদন না চাইলে postgresql.conf এ সেট না করা গুরুত্বপূর্ণ statement_timeout

এখানে এটি কাজ করার একটি উদাহরণ

SET statement_timeout = 10000;
SET
test=# SELECT pg_sleep(15);
ERROR:  canceling statement due to statement timeout

কোনটিই কনফিগারেশন ফাইলে উপস্থিত নেই, তাই আমি ডিফল্ট ব্যবহার করছি। :( অন্য কোনও ধারণা?
Andrzej Gis

@ জিজেক নিশ্চিত, এটি আপনার স্থানীয় আইপি স্ট্যাক বা ফায়ারওয়ালে নেটওয়ার্ক পর্যায়ে কিছু হতে পারে।
ইভান ক্যারল

4

বাক্সের বাইরে নয়। যদিও আপনার সেটিংস উপেক্ষা করে এমন একটি কাস্টম সার্ভার সংকলন করা বেশ সহজ হবে।

তবে আরও সম্ভবত সম্ভবত আপনার সংযোগগুলি ফায়ারওয়াল বা গেটওয়ে দ্বারা বিচ্ছিন্ন হয়ে যাচ্ছে যা নিষ্ক্রিয় সংযোগগুলি পছন্দ করে না।

আপনার যদি সার্ভারের লগ ফাইলটিতে অ্যাক্সেস থাকে তবে এটির একটি ভাল ধারণা দেওয়া উচিত। ক্লায়েন্ট যদি বলে যে সার্ভারটি অপ্রত্যাশিতভাবে সংযোগটি বন্ধ করে দিয়েছে এবং সার্ভারটি বলেছে যে ক্লায়েন্টটি অপ্রত্যাশিতভাবে সংযোগটি বন্ধ করে দিয়েছে, তবে এটি সম্ভবত ক্লায়েন্ট এবং সার্ভারের মধ্যে এমন কিছু যা প্রকৃতপক্ষে সংযোগটি বিচ্ছিন্ন করে দিচ্ছে।


এটা স্পষ্টভাবে এর না কার্যক্ষম-পেতে থেকে মাত্র নিয়মিত কাপড় - একটি কাস্টম কম্পাইল সার্ভার। আপনি কি দয়া করে আরও বেশি ফায়ারওয়াল এবং গেটওয়ে লিডগুলি বিস্তারিতভাবে বর্ণনা করতে পারেন? আমি কীভাবে এটি যাচাই করে ঠিক করতে পারি?
আন্দ্রেজ গিস

-2

হ্যা এটা সম্ভব. কিছু সংযোগ পরামিতি রয়েছে যা আপনাকে সেট করতে হবে।

নীচের লিঙ্ক উল্লেখ করুন। https://jdbc.postgresql.org/documentation/head/connect.html

লগইনটাইমআউট সংযোগটাইমআউট সকেট টাইমআউট বাতিলসিগন্যালটাইমআউট


2
এগুলি হ'ল ডেটাবেস সংযোগের ক্লায়েন্টের পক্ষে সেটিংস এবং সেটিংস নয় যা কোনও ক্লায়েন্টকে সংযোগ বিচ্ছিন্ন করার জন্য সার্ভারে কনফিগার করা যায়। ওপি সার্ভার-সাইড সংযোগের টাইমআউট সেটিংস খুঁজছে।
জন ওরফে হট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.