কোন সার্ভারের আসলে কতটা র‌্যাম দরকার?


12

আমার কাছে বেশ কয়েকটি সার্ভার বিশ্বজুড়ে মোতায়েন রয়েছে। তারা এসকিউএল সার্ভার 2005 এক্স x64 এর সাথে 6 জিবি র‌্যামের সাথে উইন্ডোজ 2003 x64 চালাচ্ছে। বাক্সগুলির মধ্যে সর্বোত্তম (বা এমনকি একটি গ্রহণযোগ্য) কনফিগারেশন নেই, কারণ যে লোকটি তাদের বহু বছর আগে আদেশ দিয়েছিল সে সত্যিই জানত না যে সে কী করছে।

বাক্সগুলি মোটামুটি ধারাবাহিকভাবে মেমরির বাইরে চলেছে, পেজিং ফাইলটি ব্যবহার করে শেষ হয় এবং সবকিছু ধীর হয়ে যায়। সাধারণত প্রতিশ্রুতি চার্জটি 5.8 গিগাবাইট এবং তারপরে যখন কাউকে নিবিড় কিছু করার প্রয়োজন হয় (উদাহরণস্বরূপ একটি প্রতিবেদন চালান), সেই সংখ্যাটি ছাদের উপর দিয়ে যায়।

আমি আরও মেমরির অর্ডার করার ক্ষমতাগুলি পাওয়ার চেষ্টা করেছি, তবে আমি প্রচুর বিরোধিতা পাচ্ছি (উদাঃ সফ্টওয়্যারটিকে আরও পারফরম্যান্ট করে তুলুন, এই সমস্ত সার্ভারের জন্য খুব বেশি ব্যয় করতে হবে, বা প্রমাণ করুন যে বাক্সে পর্যাপ্ত মেমরি নেই) ইত্যাদি etc. ..)।

আমি কোনও প্রযুক্তিবিহীনদের কাছে উপস্থাপন করতে পারি এমন একটি বাক্সের জন্য প্রয়োজনীয় কতগুলি র্যামের জন্য নির্দেশিকা (বা একটি সূত্র) রয়েছে, যাতে শেষ পর্যন্ত আমরা আরও মেমরি অর্ডার করতে পারি?


সিস্টেমটি কি ঘরে বসে বিকশিত হয়?
ওসকার ডুভের্বন

@Oskar। হ্যাঁ, আমি বিকাশকারী এবং কোডটি নরক এবং পিছনে অনুকূলিত হয়েছে। কেবলমাত্র একটি টন ডেটা রয়েছে।
রাগান্বিত হ্যাকার

তাহলে আমার উত্তর দেখুন। এটি আমি বিশেষভাবে সাজানোর জিনিস
mrdenny

উত্তর:


9

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

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

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

আপনি আপনার বাস্তব জীবনের ব্যবহার এবং সেখান থেকে কাজ না করা অবধি আপনার প্রয়োজনীয় সঠিক মেমরিটি জানতে পারবেন না।

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

তবে এটির উপর নির্ভর করে যে এটি ব্যবসায়কে কীভাবে খারাপভাবে প্রভাবিত করছে। টিউনিংয়ে বিনিয়োগ করা কি আরও মূল্যবান, বা প্রথমে হার্ডওয়্যারটি ফেলে দেওয়া এবং তারপরে এটি টিউন করার চেষ্টা করা কি যথেষ্ট খারাপ?


+1 আকার এবং পরিসংখ্যান প্রয়োজন
ওসকার ডুভের্বন

12

আপনার আরও বেশি র‌্যামের প্রয়োজন কিনা তা দেখার একটি সহজ উপায় হ'ল পেজ লাইফ প্রত্যাশা সুগন্ধি কাউন্টারটি চার্ট করা। এই কাউন্টারটি আপনাকে জানায় যে এসকিউএল সার্ভার মনে করে যে অন্যান্য ডেটার জন্য জায়গা তৈরি করার আগে ডেটা বাফার পুলে রাখা হবে। আপনি যতটা সম্ভব এই সংখ্যাটি চান। G জিগ র‌্যাম ইনস্টল করা (আপনার 4 টি জিগের এসকিউএল সর্বাধিক সীমাবদ্ধ হওয়া উচিত) আপনি সম্ভবত বেশিরভাগ কয়েক মিনিটের জন্য মেমরিতে ডেটা রাখবেন, যখন কেউ একটি বড় রিপোর্ট চালায় আপনি এই নম্বর ট্যাঙ্কটি দেখতে পাবেন কয়েক সেকেন্ড নিচে। আপনার যত বেশি র‌্যাম রয়েছে, তত বেশি ডেটা মেমরিতে রাখা যেতে পারে এবং ডিস্কগুলি থেকে কম পঠন করা প্রয়োজন।

উদাহরণস্বরূপ, আমি এই মুহূর্তে যে সিস্টেমগুলির সাথে কাজ করছি তার 256 জিগ র‌্যাম রয়েছে এবং আমরা 12000 সেকেন্ড বা তার বেশি সময় ধরে মেমোরিতে ডেটা রাখি।

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


6

Hmmmm। ওয়েল, 6 টি জিগ একটি বড় পরিমাণে র্যাম, এমনকি একটি বড় এমএসএসকিউএল ইনস্টল করার জন্যও। আপনি সম্ভবত দেখতে এবং আপনার কোডটি সত্যই কার্যকর কিনা তা নিশ্চিত করতে চাইতে পারেন। একটি 6 গিগের লেনদেন কিছুটা অস্বাভাবিক ... আমি স্টেট-ওয়াইড বেতনভিত্তিক সিস্টেমে কাজ করেছি যা বছরের শেষে 1099 প্রসেসিংয়ে এক গিগ শীর্ষে নেই ... এবং প্রায়শই একটি চালানো যেতে পারে ? আমি জানি না। আপনি কোন ধরণের ডেটা নিয়ে কাজ করছেন?

বলা হচ্ছে, আপনি একটি 64 বিট বাক্সে আপনার যতটা র্যাম পছন্দ করেন তেমন স্ট্যাম করতে পারেন, এবং র্যামটি ময়লা সস্তার, তাই সেখানে যতটা সম্ভব আপনি রাখতে পারেন ... সত্যিই খুব বেশি র্যাম থাকতে পারে না একটি ডাটাবেস সার্ভার।

সম্পাদনা: এটি এখন খুব পুরানো। আমার 256 জিগ র‌্যাম সহ এমএসএসকিউএল বাক্স রয়েছে।


1
একটি ডেটাবেস সার্ভারে সত্যিই খুব বেশি র্যাম থাকতে পারে না। সম্ভবত না, তবে আপনার ব্যবহৃত অর্থ নষ্ট হওয়ার কারণে আপনার র‌্যাম থাকতে পারে it যদিও আমি সাধারণ ধারণার সাথে একমত হই যে এটি নির্দিষ্ট ধরণের কাজ করে বাক্সগুলিতে উদার হওয়ার জন্য অর্থ প্রদান করে, আমি মনে করি না যে এটির প্রয়োজনীয়তাগুলি না বুঝে কেবল কোনও সিস্টেমে সংস্থানগুলি ছড়িয়ে দেওয়া পর্যন্ত প্রসারিত।
রব মোয়ার

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

1
@ আরবার্ট: আমি একমত তবে আমি প্রায়শই দেখতে পেয়েছি যে কোনও সফ্টওয়্যার সমস্যা সমাধানের জন্য লোকেরা হাজার হাজার কোডার এবং পরামর্শদাতাদের জন্য ব্যয় করেছে, যখন এটিতে আরও কিছু হার্ডওয়্যার নিক্ষেপ করার সময় ব্যয়ের একটি অংশের জন্য একই কাজ করা হয়।
শয়তানিকপিপি

1
6 জিগস কি ভাল আকারের এসকিউএল সার্ভার মেমরি কনফিগার করে? আপনি কিছু সুন্দর ছোট সার্ভার ব্যবহার করছেন। আমি 256 জিগ ইনস্টল করা বাক্স পেয়েছি এবং 512 জিগ ইনস্টল করা আমার বন্ধু রয়েছে। 6 জিগস কিছুই নয়।
mrdenny

1
@ এমডমাররা: এহ। 2012 সালে, নিশ্চিত। ২০০৯ সালে? খুব বেশি না.
স্যাটোনিকপপি

4

আপনি আরও মেমরি (বা অন্য কোনও উপাদান) কিনে বন্দুকটি ঝাঁপ দেওয়ার আগে আমি সার্ভারে পারফরম্যান্স বিশ্লেষণ চালানোর পরামর্শ দেব। পারফোন ব্যবহার করে আপনি নিজেই এটি করতে পারেন বা তৃতীয় পক্ষের সরঞ্জামগুলি ব্যবহার করে দেখতে পারেন। আপনার ওএস এবং এসকিউএল সার্ভার উভয়েরই পারফরম্যান্স বিশ্লেষণ করা উচিত। আইএমএইচও, প্রায়শই সঠিক বিশ্লেষণ হওয়ার আগে আমরা কোনও সমস্যায় হার্ডওয়্যার নিক্ষেপ করতে প্রস্তুত। এই মুহুর্তে আপনারা জানেন সবার জন্য এটি কোনও প্রশ্ন, সঞ্চিত প্রক্রিয়া, এক্সিকিউশন প্ল্যান, ডিস্ক আই / ও, সিপিইউ ব্যবহার ইত্যাদি নিয়ে সমস্যা হতে পারে Mem মেমরির চাপ প্রায়শই সিস্টেমে অন্য কোনও বাধার লক্ষণ হতে পারে।


1

যেমন "স্যাটোনিকপ্পি" বলেছিলেন, খুব বেশি র্যামের মতো কোনও জিনিস নেই, তবে 6 জিবি ঠিক করা উচিত, আপনার সার্ভারটি কী করে সে সম্পর্কে আপনার পুনরায় চিন্তা করা উচিত, আমি মনে করি না যে আপনার "হার্ডওয়্যার" সমস্যা আছে, আপনার উচিত আপনার এসকিউএল প্রোগ্রামিং উপর ফোকাস ...


1

এটি যখন ডাটাবেস সার্ভারের কথা আসে তখন "পর্যাপ্ত" মেমরির কোনও জিনিস নেই। অবশ্যই, এটি আসলে তারা কী করে এবং চালায় তার উপর নির্ভর করে তবে যদি এটি নিয়মিত ব্যবহারযোগ্য ডাটাবেসযুক্ত যা প্রচুর ডেটা থাকে এবং জটিল প্রশ্নগুলি করে - 6 জিবি সহজেই গুরুতরভাবে অপর্যাপ্ত হতে পারে।

আমি একটি সমস্যাযুক্ত সার্ভারকে কমপক্ষে 32 বা 64 জিবিতে আপগ্রেড করে শুরু করব এবং এটি সাহায্য করে কিনা তা দেখুন। যদি তা না হয় তবে ডাটাবেস টিউনিং, অ্যাপ্লিকেশন সমস্যা সমাধান এবং ডিবাগিং-এর দিকে ঘুরুন - যা সমস্ত, যদি না একজন নির্বোধ ডাটাবেসটি ডিজাইন করে তবে সার্ভার-গ্রেড মেমরির কয়েকটি কাঠির তুলনায় অনেক বেশি ব্যয় হয় (এবং এমনকি কোনও নির্বোধ জিনিসটি ডিজাইন করে এমনকি সুস্পষ্ট নকশা পেয়েও ধরে রাখা সমর্থনের সাথে সংশোধন করা ত্রুটিগুলি একটি চ্যালেঞ্জ প্রমাণ করতে পারে)।

এটি বলেছিল, যেমন অন্য কেউ বলেছিলেন - এটি ডিস্ক বা নেটওয়ার্ক I / O পারফরম্যান্সের অভাবের মতো (সফ্টওয়্যার ডিজাইনের সমস্যাগুলি বাদ দিয়ে) অন্য কিছু হতে পারে - একটি ডিবিএ প্রো নিয়োগ দেওয়ার জন্য কেবলমাত্র একটি বেসিক এসকিউএল পারফরম্যান্স মনিটরিংয়ের জন্য যেতে দিন দরকারী প্রমাণ করতে পারে।


0

আপনার আরও সূচি তৈরির দিকে নজর দেওয়া উচিত। আমি মনে করি যে সাধারণভাবে, বেশিরভাগ লোকেরা তাদের ডাটাবেসের আন্ডার-ইনডেক্স করে।

এটি এখনও এয়ার-কোড, আমি এখনও পুরোপুরি পরীক্ষা করে দেখিনি, তবে এটি আপনাকে সঠিক দিকে নিয়ে যাওয়া উচিত

http://accessadp.com/2011/08/22/missing-indexes-great-script-for-determining-roi/

Select ‘create index IX_’ +
 sys.objects.name +
 isnull(replace(‘_’ + equality_columns, ‘,’, ‘_’), ”) +
 isnull(replace(‘_’ + inequality_columns, ‘,’, ‘_’), ”) + ‘ on ‘ +
 sys.objects.name +
 ‘(‘ +
 coalesce(equality_columns + ‘,’ + inequality_columns, equality_columns , inequality_columns ) +
 ‘) ‘ +
 isnull(‘ include (‘ + included_columns + ‘)’, ”)
 as CreateIndexSql,
 (CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.user_seeks)+CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.unique_compiles))*CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.avg_total_user_cost)*CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.avg_user_impact/100.0) AS Score,
 sys.schemas.schema_id,
 sys.schemas.name AS schema_name,
 sys.objects.object_id,
 sys.objects.name AS object_name,
 sys.objects.type,
 partitions.Rows, partitions.SizeMB,
 sys.dm_db_missing_index_details.equality_columns,
 sys.dm_db_missing_index_details.inequality_columns,
 sys.dm_db_missing_index_details.included_columns,
 sys.dm_db_missing_index_group_stats.unique_compiles,
 sys.dm_db_missing_index_group_stats.user_seeks, sys.dm_db_missing_index_group_stats.user_scans,
 sys.dm_db_missing_index_group_stats.avg_total_user_cost, sys.dm_db_missing_index_group_stats.avg_user_impact,
 sys.dm_db_missing_index_group_stats.last_user_seek, sys.dm_db_missing_index_group_stats.last_user_scan,
 sys.dm_db_missing_index_group_stats.system_seeks, sys.dm_db_missing_index_group_stats.system_scans,
 sys.dm_db_missing_index_group_stats.avg_total_system_cost, sys.dm_db_missing_index_group_stats.avg_system_impact,
 sys.dm_db_missing_index_group_stats.last_system_seek, sys.dm_db_missing_index_group_stats.last_system_scan
 FROM
 sys.objects
 JOIN (
 SELECT
 object_id, SUM(CASE WHEN index_id BETWEEN 0 AND 1 THEN row_count ELSE 0 END) AS Rows,
 CONVERT(numeric(19,3), CONVERT(numeric(19,3), SUM(in_row_reserved_page_count+lob_reserved_page_count+row_overflow_reserved_page_count))/CONVERT(numeric(19,3), 128)) AS SizeMB
 FROM sys.dm_db_partition_stats
 WHERE sys.dm_db_partition_stats.index_id BETWEEN 0 AND 1 –0=Heap; 1=Clustered; only 1 per table
 GROUP BY object_id
 ) AS partitions ON sys.objects.object_id=partitions.object_id
 JOIN sys.schemas ON sys.objects.schema_id=sys.schemas.schema_id
 JOIN sys.dm_db_missing_index_details ON sys.objects.object_id=sys.dm_db_missing_index_details.object_id
 JOIN sys.dm_db_missing_index_groups ON sys.dm_db_missing_index_details.index_handle=sys.dm_db_missing_index_groups.index_handle
 JOIN sys.dm_db_missing_index_group_stats ON sys.dm_db_missing_index_groups.index_group_handle=sys.dm_db_missing_index_group_stats.group_handle
 WHERE
 sys.dm_db_missing_index_details.database_id=DB_ID()
 AND (CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.user_seeks)+CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.unique_compiles))*CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.avg_total_user_cost)*CONVERT(Numeric(19,6), sys.dm_db_missing_index_group_stats.avg_user_impact/100.0) > 100
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.