1 জিবি ভিপিএস - অ্যাপাচি ওয়ার্কার এমপিএম - এফসিজিআইডি - সর্বাধিক সমবর্তী সংযোগ - র‌্যাম সিএপি


9

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

সার্ভার - 1 জিবি র‌্যাম সহ ভিপিএস (অ্যাপাচি কেবলমাত্র এটি প্রায় 150 এমবি র‌্যাম ব্যবহার করে) আমি অ্যাপাচি-কে প্রায় 750 এমবি মেমরির ব্যবহারের সিএপি রাখতে চাই - যাতে আমার সার্ভারটি কখনই র্যামের বাইরে চলে না যায়।

আমি কোনও সমস্যা ছাড়াই প্রায় 2 বছর ধরে সার্ভারটি চালাচ্ছি - তবে আমরা সম্প্রতি এমপি 3` এর স্ট্রিমিং শুরু করেছি এবং এর জন্য আরও সমবর্তী সংযোগের প্রয়োজন। সার্ভারটিতে কয়েকটি ছোট ছোট ডিডিওএস আক্রমণও রয়েছে - তাই সার্ভারটির স্মৃতিশক্তি না চলাতে রোধ করতে আমি এক টন নীচে সেটিংসটি ছাঁটা করেছি - আমি রেট সীমাতে কিছু ফায়ারওয়াল নিয়মও যুক্ত করেছি।

আমার এখন সেট আপটি দেখতে বেশ ভালই কাজ করছে - তবে আমি কিছু সেগমেন্টেশন ফল্ট ত্রুটি পাচ্ছি

[Sat Mar 23 03:19:50 2013] [notice] child pid 28351 exit signal Segmentation fault (11)
[Sat Mar 23 03:56:20 2013] [notice] child pid 29740 exit signal Segmentation fault (11)
*** glibc detected *** /usr/sbin/httpd.worker: malloc(): memory corruption: 0xb83abdd8 ***

এবং কিছু আউট অফ মেমরি ত্রুটি

Out of memory during array extend.

এটি আমার বর্তমান সেট আপ, আমি কিছু পরামর্শের সত্যই প্রশংসা করব।

অ্যাপাচি সেটিংস:

Timeout 30
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 2
#####################
# Spawn 2 child processes, spawning 25 threads for each child process.
# So, a pool of 50 threads is left up and sleeping, ready to serve incoming requests.
# If more requests will come in, apache will spawn new child processes, each one spawning 25 threads,
# enlarging the thread pool until the total number of threads become 50. In that case, apache begin
# to cleanly drop processes, trying to reach 25 threads.
# New processes and its threads are spawned in case of a large spike of requests, until 200 parallel
# client requests are reached, then apache will no longer accept new incoming connections.
# When the load calm down, and requests come back under 200 parallel connections, apache will continue
# to accept connections. After 25, 000 requests served by a child, q. 1000 per thread, the process
# get closed by the father to ensure no memory leak is fired.
<IfModule worker.c>
ServerLimit      16
StartServers         2
MaxClients       400
MinSpareThreads   25
MaxSpareThreads  50 
ThreadsPerChild    25
MaxRequestsPerChild  1000
ThreadLimit          64 
ThreadStackSize      1048576
</IfModule>
#####################

এবং তারপরে fcgid.conf এ কিছু সেটিংস

FcgidMinProcessesPerClass 0 
FcgidMaxProcessesPerClass 8 
FcgidMaxProcesses  25
FcgidIdleTimeout 60 
FcgidProcessLifeTime 120 
FcgidIdleScanInterval 30

/Etc/my.cnf এর জন্য আমার আউটপুট অনুরোধ করা হয়েছে

[Mysqld]
datadir = / var / lib / MySQL
সকেট = / var / lib / MySQL / mysql.sock
ব্যবহারকারী = MySQL

# Skip-InnoDB

কানেক্ট_টাইমআউট = 10
সর্বোচ্চ_সংযোগ = 300 300
সিম্বলিক-লিঙ্ক = 0
ইনোডব_ফাইল_পার_ টেবিল = 1
myisam_sort_buffer_size = 8M
read_rnd_buffer_size = 512K
নেট_বফার_ দৈর্ঘ্য = 8 কে
read_buffer_size = 256K
বাছাই_বাফার_সাইজ = 512 কে
টেবিল_কাছে = 32
সর্বোচ্চ_নোলা_প্যাকেট = 1 এম
কী_বফার = 16 কে
ক্যোরি_ক্যাচি_প্রকার = 1
ক্যোয়ারী-ক্যাশে-আকার = 32 এম
থ্রেড_ক্যাচি_ আকার = 16 16
নেট_বফার_ দৈর্ঘ্য = 2 কে
থ্রেড_স্ট্যাক = 256 কে
অপেক্ষা_টাইমআউট = 300

slow_query_log

# লগ-ধীর প্রশ্নের = প্রথমেই / var / log /? MySQL / ধীর queries.log
slow_query_log = প্রথমেই / var / log /? MySQL / ধীর queries.log
দীর্ঘ_ প্রশ্ন_কাল = 1

[Mysqld_safe]
লগ-ত্রুটি = প্রথমেই / var / log /? mysqld.log
PID ফাইল = প্রথমেই / var / রান / mysqld / mysqld.pid

এবং পিএইচপি মেমরি_লিমিট = 64 এম


কোন ধারণা কেউ?
ব্যবহারকারী 1287874

1
সুতরাং, আপনার কাছে থাকা 1 গিগাবাইটের মধ্যে আপাচি যদি 750 এমবি লাগে, তবে আপনি কীভাবে অন্যান্য 250 টি বিতরণ করবেন তা কল্পনা করবেন? এটি সত্যই গুরুত্বপূর্ণ ... আমি জিজ্ঞাসা করছি কারণ 750 অত্যন্ত অবাস্তব এবং অস্বাস্থ্যকর প্রত্যাশা। এই 1
জিবিটির

উত্তর:


0

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

সাধারণত যখন আমি কোনও সার্ভার অপ্টিমাইজ করি তখন সর্বাধিক মাইএসকিউএল কত মেমরি ব্যবহার করতে পারে তার ধারণা পেতে আমি মাইএসকিএল টিউনিং -প্রিমার.শ স্ক্রিপ্টটি চালাব:

https://launchpad.net/mysql-tuning-primer

তারপরে প্রেফের্কের জন্য আমি অ্যাপাচি + পিএইচপি সর্বোচ্চ কতটা মেমরি ব্যবহার করতে পারে তার একটি ধারণা পেতে php মেমরি_লিমিট দ্বারা ম্যাক্সক্লিয়েন্টগুলি গুণিত করব। এগুলি মোটামুটি অনুমান কিন্তু একবার আপনি এটি অনেক কিছু করে নিলে আপনি এটির জন্য অনুভূতি পান।

আমি সার্ভারের সর্বাধিক মেমরির আশেপাশে মোট 2 টি মোট রাখার চেষ্টা করি, আপনার ভিপিএসের যদি অদলবদল না হয় তবে আমি অবশ্যই এটি বেশ কয়েকটি কারণে কম রাখার চেষ্টা করব:

1) সার্ভারের অন্যান্য প্রক্রিয়াগুলি মেমরি ব্যবহার করবে

2) সার্ভারের কিছু পিএইচপি স্ক্রিপ্টগুলি নিজের জন্য মেমরি_লিট পরিবর্তন করতে ini_set ব্যবহার করতে পারে।

আপনি যদি /etc/my.cnf এবং php মেমরি_লিট সরবরাহ করতে পারেন তবে আমি আপনার জন্য কিছু ভাল সেটিংস নিয়ে আসতে সক্ষম হতে পারি।


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


হাই মাইকেল, আমি তখন থেকে আমার সেটিংস আপডেট করেছি (লোকদের কাছ থেকে কিছু পরামর্শ পাওয়ার পরে) আমি সার্ভারলিটকে 8 ম্যাক্সক্লিয়েন্টগুলি 200 এ নামিয়ে 200 এবং এফসিজিআইডি 10-এ নামিয়েছি - এটি লক্ষ্য রাখবে এবং এটি কীভাবে হয় তা দেখুন। আমি শীঘ্রই মূল পোস্টে আউটপুটগুলি পোস্ট করব
ব্যবহারকারী 1287874

কত দ্রুত? এপ্রিল?
এডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.