সর্বোচ্চ সংযোগ পুল 100 এ ক্যাপড


27

আমি একটি উইন্ডোজ সার্ভার 2008 বাক্সে এসকিউএল সার্ভার 2008 আর 2 এসপি 1 চালাচ্ছি। আমার কাছে ভিজুয়াল স্টুডিও 2010 থেকে একটি .NET স্ক্রিপ্ট চলছে যা নিম্নলিখিতগুলি করে:

  • ডাটাবেসে পৌঁছে যায়
  • পরিবর্তন করে
  • iterates

এটি পুনরাবৃত্তি হবে মোট মোট সংখ্যা 150, তবে এটি 100 সংযোগে থামছে এবং কেন আমি তা বুঝতে পারি না। আমি আমার স্ক্রিপ্টটি কেবল একটি একক থ্রেড ব্যবহার করতে সামঞ্জস্য করতে পারতাম, তবে আমি কোথায় থাকতে পারব তা জানতে পছন্দ করব যেহেতু আমি সর্বাধিক সংযোগ সেটিংটি অনুপস্থিত যা ভবিষ্যতের রেফারেন্সের জন্য জানার জন্য আরও দরকারী।

আমি এখন পর্যন্ত কোথায় যাচাই করেছি তা এখানে:

  • ভিজ্যুয়াল স্টুডিও 2010 এ এসকিউএল সংযোগের স্ট্রিং (এটি 1000 এ সেট করা আছে)
  • এসএসএমএস ডাটাবেস উদাহরণ সংযোগ বৈশিষ্ট্য (এটি 0 [অনন্ত] ব্যবহারকারী সংযোগে সেট করা আছে)
  • সার্ভার ২০০৮-এ কিছু তথ্য গুগল করা হয়েছে, দেখে মনে হচ্ছে এটি 100 টিরও বেশি সংযোগ পরিচালনা করতে পারে
  • SP_WHO2লজিকাল সংযোগগুলি সম্পর্কে আরও তথ্য দেয় যা আমার কোডের সাথে পদক্ষেপ নিয়েছিল, দেখে যে # সংযোগের সংখ্যা 52 থেকে শুরু হয় এবং 152 লজিকাল সংযোগে "ম্যাক্স পুলড সংযোগগুলি পৌঁছেছে" ত্রুটির সাথে স্ক্রিপ্ট ত্রুটি।
  • ব্যবহারের জন্য সংযোগের স্ট্রিং পরিবর্তন করে Data Source=PerfSQL02;Initial Catalog=Masked;Integrated Security=True;Max Pool Size=1000

আমি কোথায় অন্য চেক করতে হবে তা নিশ্চিত নই, আমি জানি আমার এখানে প্রচুর চলন্ত অংশ রয়েছে তবে আমি অনুভূতি পাচ্ছি যে আমি কোথাও সর্বাধিক পুলের সেটিংটি মিস করছি।


1
আপনি কি আপনার সংযোগের স্ট্রিং পোস্ট করতে পারেন? আমার উত্তর দেখুন দয়া করে। এটি আপনার প্রতিকার হওয়া উচিত (এই মানটি সংযোগের স্ট্রিংয়ে নির্দিষ্ট করা হবে System.Data.SqlClient100 100 এ ডিফল্ট, যার কারণে আপনি সংযোগ পুলটি অবসন্নতা দেখছেন)।
টমাস স্ট্রিংগার

উত্তর:


24

এসকিউএল সার্ভার ডিফল্টরূপে সর্বাধিক 32767 সংযোগের অনুমতি দেয় । এটি ব্যবহার করে পরিবর্তন করা যেতে পারে sp_configure। এই সেটিংটির জন্য আপনার বর্তমান কনফিগারেশনটি দেখতে, নিম্নলিখিত কোয়েরিটি ব্যবহার করুন:

select * from sys.configurations
where name ='user connections'

ডিফল্টরূপে, আপনার সর্বাধিক 32767 দেখতে value_in_useহবে 0 টির সমান (ডিফল্ট সেটিংস ব্যবহার করুন)। যদি এটি পরিবর্তন করা হয়, আপনি লিঙ্কে বর্ণিত হিসাবে অন্য মানগুলি ব্যবহার করতে এসকিউএল সার্ভারটি পুনরায় কনফিগার করতে পারেন।

আপনার অ্যাপ্লিকেশনটির বাইরে আরও ক্রিয়াকলাপ থাকতে পারে (বা আপনার অ্যাপ্লিকেশনটি যা ভাবেন তার চেয়ে বেশি সংযোগ তৈরি করছে) আপনার আসলে আরও কতগুলি সংযোগ তৈরি হচ্ছে তাও পর্যালোচনা করা উচিত । আপনি জেনারেল স্ট্যাটিস্টিক্স -> পারফিউমে লজিকাল সংযোগগুলি দেখতে বা মানগুলিতে ক্যোয়ারীটি দেখতে sys.dm_os_performance_countersচাইবেন (সিএনটি_ভ্যালু বর্তমান মানের সময় মানটি দেখিয়ে দেবে):

select * from sys.dm_os_performance_counters
where counter_name ='User Connections'

হ্যাঁ, আমি ইতিমধ্যে ব্যবহারকারীর সংযোগগুলি পরীক্ষা করে দেখেছি (এটি আমি প্রথম যেটি গিয়েছিলাম এবং এটি ইউআই এবং মাইক্রোসফ্টের ডকুমেন্টেশনে উভয়ই সন্ধান করা সহজ। আমিও আমার কোডটি দিয়েছিলাম এবং এসএসএমএসের মাধ্যমে লজিকাল সংযোগের সংখ্যার দিকে নজর রেখেছি) । SP_WHO2, যা যৌক্তিক সংযোগ সম্পর্কে অলসতা তথ্য একটি শালীন পরিমাণ দেয় ব্যবহার করে, আমার সার্ভারে 51 সংযোগ আছে যখন স্ক্রিপ্ট ব্যর্থ, এটি নির্মাণ 100 টিরও সংযোগ আছে যে কিভাবে আমি যেখানে আমি আছি অর্জিত করেছি।।।
শন লং

আমি যে পদক্ষেপ নিয়েছি সেগুলি দিয়ে আমি আমার প্রশ্নটি আরও কিছুটা পরিষ্কার করে দিয়েছি। এটি এসকিউএল এ কোনও সেটিং নাও হতে পারে, এ কারণেই আমি উইন্ডোজ এবং ভিজ্যুয়াল স্টুডিও সেটিংসের দিকে তাকাতে শুরু করেছি।
শান লং

1
যদি আপনি এই সমস্তটি যাচাই করেছেন এবং এটি এখনও 100 সংযোগে ব্যর্থ হয় তবে উত্তরটি ডাটাবেস সেটিংসের বাইরে রয়েছে। এফওয়াইআই, এই 51 টি সংযোগগুলি সমস্ত সিস্টেম প্রক্রিয়া (নিজের জন্য +1))
মাইক ফল

কিছুটা বন্ধ করার জন্য, এটি শেষ মন্তব্যটি সঠিক হয়ে শেষ হয়েছিল। এই 100 টি সংযোগ কেন তৈরি হচ্ছে এবং আমি কোডটিতে একটি ফাঁস পেয়েছি তা আমি খুব ঘনিষ্ঠভাবে দেখেছি। এটি ঠিক আছে যে ঠিক করার পরে। উপরের তথ্যগুলি যদিও এখনও সত্যই দরকারী, এবং আমি আশা করি অন্যরাও এটি দরকারী হিসাবে পাবেন।
শান লং

25

আপনার সংযোগের স্ট্রিংয়ে, নির্দিষ্ট করুন max pool size=<your desired max pool size>। সুতরাং অন্য কথায়, আপনি যদি সর্বোচ্চ পুলের আকারটি 500 টির মানটিতে পরিবর্তন করতে চান তবে আপনার সংযোগের স্ট্রিং এটির সাথে সাদৃশ্যপূর্ণ হতে পারে:

"data source=your_server; initial catalog=your_db; trusted_connection=true; max pool size=500"

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

এছাড়াও, নিশ্চিত হয়ে নিন যে আপনি আপনার সংযোগগুলি সঠিকভাবে বন্ধ করে দিচ্ছেন বা নিষ্পত্তি করছেন, অন্যথায় আপনি সংযোগগুলি বেঁধে রাখবেন। এরকম কিছু (সি #):

string connectionString = "data source=your_server; initial catalog=your_db; trusted_connection=true; max pool size=500";

using (SqlConnection dbConn = new SqlConnection(connectionString))
{
    using (SqlCommand sqlCmd = new SqlCommand())
    {
        sqlCmd.Connection = dbConn;
        sqlCmd.CommandText = "select 1;";

        // ... so on and so forth
    }
}

usingব্লক (C #) কল IDisposable.Dispose()শেষ হয়ে গেলে। এছাড়াও আপনি বাস্তবায়ন হতে পারে SqlConnection.Dispose()বা SqlConnection.Close()finallyএকটি ব্লক try/catch/finallyব্লক।

রেফারেন্স: এসএসএলকনেকশন.কনেকশন স্ট্রিং সম্পত্তি সম্পর্কিত এমএসডিএন ডকুমেন্টেশন


এখানে সংযোগের স্ট্রিংটি রয়েছে, আমার প্রশ্নটিও আপডেট করছে। Data Source=PerfSQL02;Initial Catalog=Masked;Integrated Security=True;Max Pool Size=1000
শান লং

3
এটি কি আপনার সংযোগের স্ট্রিং সর্বত্র ? আমি জিজ্ঞাসার কারণটি হ'ল বিভিন্ন সংযোগের স্ট্রিংগুলি বিভিন্ন সংযোগ পুল হতে চলেছে।
টমাস স্ট্রিংগার

এটি একটি খুব, খুব ভাল প্রশ্ন। আমি এ পর্যন্ত 3 টি সংযোগের স্ট্রিং পরীক্ষা করেছি, তবে তারা সবাই একটি উচ্চতর সর্বোচ্চ পুলের জন্য চাপ দিচ্ছে। আমি দেখতে পাচ্ছি যে আমি অন্য কোনও স্ট্রিং পেতে পারি যা এর কারণ হতে পারে।
শান লং

যদি আপনি কেবলমাত্র এক্সিকিউশনটি ডিবাগ করেন SqlConnection.ConnectionStringতবে নির্দিষ্ট ক্রিয়াকলাপের জন্য রানটাইম মানটি কী তা আপনি দেখতে পারা উচিত । এটি সহজতম উপায় হবে। যদি max pool sizeসেখানে না থাকে তবে এটি 100 হয়।
টমাস স্ট্রিংগার

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