অ্যামাজন ইসি 2, মাইএসকিএল বাতিল করা শুরু হয়েছে কারণ ইনোডিবি: এমএমএপি (এক্স বাইট) ব্যর্থ হয়েছে; ভুল 12


95

আমি এখানে যা পড়ি তার ভিত্তিতে আমি ইসি 2 তে একটি মাইক্রো উদাহরণ সার্ভার সেট আপ করেছি

mysql সার্ভারটি প্রায়শই ব্যর্থ হয় এবং তৃতীয়বারের জন্য মাইএসকিএল সার্ভার চলে যায়। লগগুলি কেবল দেখায়

120423 09:13:38 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
120423 09:14:27 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120423  9:14:27 [Note] Plugin 'FEDERATED' is disabled.
120423  9:14:27 InnoDB: The InnoDB memory heap is disabled
120423  9:14:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120423  9:14:27 InnoDB: Compressed tables use zlib 1.2.3
120423  9:14:27 InnoDB: Using Linux native AIO
120423  9:14:27 InnoDB: Initializing buffer pool, size = 512.0M
InnoDB: mmap(549453824 bytes) failed; errno 12
120423  9:14:27 InnoDB: Completed initialization of buffer pool
120423  9:14:27 InnoDB: Fatal error: cannot allocate memory for the buffer pool
120423  9:14:27 [ERROR] Plugin 'InnoDB' init function returned error.
120423  9:14:27 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
120423  9:14:27 [ERROR] Unknown/unsupported storage engine: InnoDB
120423  9:14:27 [ERROR] Aborting

আসলে কি failed; errno 12? এবং কীভাবে আমি আরও স্থান / মেমরি দিতে পারি বা এটি স্থির করার জন্য যা কিছু প্রয়োজন।

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

এছাড়াও আমার 'my.cnf' নীচের মত:

[mysqld]
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
# max_allowed_packet=500M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0


innodb_buffer_pool_size         = 512M


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

আমার ইসি 2 মাইক্রো উদাহরণটিতে একই সমস্যা রয়েছে। ইনোডাব_বফার_পুল_সাইজ = 128 এম সেট করার চেষ্টা করেছেন এবং দেখুন কীভাবে তা হয় will
swxxii

আপনি যদি একটি মাইক্রো উদাহরণস্বরূপ ব্যবহার করছেন swap 'র স্থান যোগ করতে হবে করতে পারেন: prowebdev.us/2012/05/amazon-ec2-linux-micro-swap-space.html
pmoubed

4
ইসি 2 মাইক্রো ইনস্ট্যান্সগুলিতে ডিফল্টরূপে কোনও অদলবদল নেই এবং এটি ম্যানুয়ালি সেটআপ করা দরকার। অন্যথায় আপনি মেমরির অভাবে প্রচুর মাইএসকিউএল ক্র্যাশ দেখতে পাচ্ছেন।
pmoubed

উত্তর:


163

আমি আরডিএস ছাড়াই আমার মাইক্রো ইনস্ট্যান্সে ওয়ার্ডপ্রেস চালানোর চেষ্টা করার সময় আমি একই সমস্যার মুখোমুখি হয়েছি।

একটি অদলবদল পৃষ্ঠা যুক্ত করা আমার জন্য সমস্যার সমাধান করেছে।

অদলবদল স্থাপনের জন্য আপনি নীচের পদক্ষেপগুলি অনুসরণ করতে পারেন।

যদি এটি এখনও আপনার পক্ষে কাজ করে না, আরডিএস পরিষেবাটি বিবেচনা করুন।

================================================

আমি রেকর্ডের জন্য ব্লগের সামগ্রীটি অনুলিপি করেছি। ক্রেডিট ব্লগ লেখক যায় pmoubed :

অ্যামাজন ইসি 2 মাইক্রো ইনস্ট্যান্স অদলবদল স্থান - লিনাক্স

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

নীচের পদক্ষেপগুলি কীভাবে আপনার মাইক্রো উদাহরণের জন্য অদলবদল করতে হয় তা দেখায়। আমি ধরে নিলাম আপনার কাছে একটি মাইক্রো দৃষ্টান্ত সহ AWS অ্যাকাউন্ট রয়েছে।

  1. চালান dd if=/dev/zero of=/swapfile bs=1M count=1024
  2. চালান mkswap /swapfile
  3. চালান swapon /swapfile
  4. এই লাইনটি যুক্ত /swapfile swap swap defaults 0 0করুন/etc/fstab

আপনি প্রতিটি পুনরায় বুটের পরে অদলবদল স্বয়ংক্রিয়ভাবে সক্ষম করতে চাইলে পদক্ষেপ 4 প্রয়োজন।

SWAP স্থান সম্পর্কিত কিছু দরকারী কমান্ড:

$ swapon -s   
$ free -k

$ swapoff -a
$ swapon  -a

তথ্যসূত্র:

  1. http://www.thegeekstuff.com/2010/08/how-to-add-swap-space/
  2. http://cloudstory.in/2012/02/getting-the-best-out-of-amazon-ec2-micro-inferences/
  3. http://cloudstory.in/2012/02/adding-swap-space-to-amazon-ec2-linux-micro-instance-to-increase-theperformance/
  4. http://aws.amazon.com/ec2/instance-tyype/

ধন্যবাদ! এই আমাকে সাহায্য!
পূর্বাবস্থায় ফিরুন

8
এফওয়াইআই, এটি আমার জন্য একটি ডিজিটাল মহাসাগরের বিন্দুতে (512 এমবি) কাজ করেছিল। এটি যে কাউকে অবাক করে না এমন নয়, তবে যে কেউ অনিশ্চিত হন, সম্ভবত এটি একই সমস্যাগুলির সাথে কোনও সার্ভারে কাজ করবে।
jfacemyer

এই জীবন বাঁচানোর জন্য আপনাকে ধন্যবাদ! উবুন্টু সার্ভারের সাথে একটি মাইক্রো উদাহরণও চালাচ্ছিল।
ইসিসি-ড্যান

4
ডিজিটাল মহাসাগর ব্যবহারকারীদের জন্য, আমি এই টিউটোরিয়ালটি অনুসরণ করেছি এবং এটি একটি মনোমুগ্ধকর
ক্রিস রে

অনেক ধন্যবাদ. সর্বমোট বাফার / ক্যাশে / ক্যোয়ারী মাপের সাথে খেলে গত ২৪ ঘন্টা ধরে আমার চুলগুলি টানছে .. আপনি জীবন রক্ষাকারী!
প্রশংস

24

আমাজন ইসি 2 মাইক্রো ইনস্ট্যান্সেও আমার এই সমস্যা ছিল। নিম্নলিখিতটি যুক্ত করে আমি নির্দোষ_ডিবি'র মেমরির ব্যবহার হ্রাস করার চেষ্টা করেছি/etc/my.cnf

ইনোডাব_বফার_পুল_সাইজ = M৪ এম

এটি কাজ করে না, আমি এটিকে 16M তে নামানোর চেষ্টা করেছি এবং এটি এখনও কার্যকর হয়নি। তখন আমি বুঝতে পারি যে উদাহরণটির মূলত শূন্য মুক্ত মেমরি রয়েছে। তাই আমি অ্যাপাচি পুনরায় চালু করার চেষ্টা করেছি

sudo সিস্টেম httpd পুনরায় আরম্ভ করুন
sudo সিস্টেম mysqld পুনরায় আরম্ভ করুন

এবং সবকিছু ঠিকঠাক কাজ করেছে। হয়তো অন্য সমাধানটি হ'ল এপাচি কনফিগার করা এত বেশি স্মৃতি কোনওভাবে না খেয়ে ফেলুন।


4
মাইএসকিউএল এখনও ক্র্যাশ হতে পারে যাতে আপনার নিজের মাইক্রো দৃষ্টান্তের মধ্যে অদলবদল স্থান যুক্ত করতে পারে।
pmoubed

ধন্যবাদ, এটি উপলব্ধি করে। আমি মনে করি অ্যাপাচি ছড়িয়ে পড়ে থ্রেডগুলির সংখ্যাও সীমাবদ্ধ করার চেষ্টা করতে পারি।
wfbarksdale

দুর্দান্ত কাজ করে। আমারও এই সমস্যাটি রয়েছে এবং httpd পুনরায় চালু করে সমস্যার সমাধান হয়েছে।
লিওনেল চ্যান

4
দুর্দান্ত নৌকা, এখানে একই নৌকা। আমি আমার অ্যাপাচি কম র‌্যাম ব্যবহারের জন্য সেট করেছিলাম এবং 512 মিটার সোয়াপ ফাইলও তৈরি করেছি, তবে vm.sppppiness 10 তে সেট করে রেখেছি যাতে এটি কেবল একটি চিমটি ব্যবহার করা যায়।
newz2000

এনগিনেক্স এবং পিএইচপি-এফপিএম পুনরায় চালু করার ফলে মাইএসকিএল শুরু করার অনুমতি দেওয়ার জন্য পর্যাপ্ত মেমরি প্রকাশিত হয়েছিল! ধন্যবাদ!
এমএসএমামেজেস

4

দেখে মনে হচ্ছে আপনি পোস্টে যে মাই সিএফজি ফাইলটি দেখিয়েছেন ইনোডাব_বাফলার_পুল_সাইজের জন্য আপনি 128 এম মেমরির জন্য অনুরোধ করছেন তবে মাইএসকিউএল মনে করে আপনি 512 এম মেমরি চাইছেন :

বাফার পুল শুরু হচ্ছে, আকার = 512.0M

কয়েক লাইন নিচে, ত্রুটি বার্তাটি আপনাকে বলেছে যে মাইএসকিউএল শুরু হবে না কারণ এটি ইনোডিবি বাফার পুলের জন্য পর্যাপ্ত (512 এম) মেমরি সংরক্ষণ করতে পারে না:

মারাত্মক ত্রুটি: বাফার পুলের জন্য মেমরি বরাদ্দ করতে পারে না

যে তিনটি প্রশ্ন জিজ্ঞাসা:

  1. আপনার উদাহরণে কত স্মৃতি? 512M InnoDB বাফার পুলের পাশাপাশি মাইএসকিউএল বরাদ্দকৃত সমস্ত কিছুর পাশাপাশি আপনার অ্যাপ্লিকেশন (গুলি) এবং অপারেটিং সিস্টেমের জন্য উপযুক্ত পর্যাপ্ত মেমরি থাকতে হবে?
  2. InnoDB আপনি যা ভাবেন তার চেয়ে বেশি নেওয়ার চেষ্টা করছেন কেন?
  3. মাইএসকিউএল কেন কোনওভাবে পুনরায় চালু হচ্ছে?

আপনি উত্তর দিতে পারেন 1।

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

http://dev.mysql.com/doc/refman/5.5/en/option-files.html

ইস্যু ৩. মেমরির বহিঃপ্রকাশের কারণে হতে পারে যা স্টার্টআপের কিছু পরে ঘটে। যদি লস থাকে তবে আপনার লগগুলিতে আরও ফিরে এর ইঙ্গিত দেখতে হবে।

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

https://stackoverflow.com/a/3630707/141172


2

আমার জন্য, আমার ইসি 2 উদাহরণটিতে অদলবদল ভলিউম যুক্ত করে এই সমস্যাটি ঠিক করা হয়েছিল। আমার পরিষেবাগুলি কেবল বাক্সে সমস্ত স্মৃতি গ্রাস করছিল এবং ক্রাশ হবে। বছরের পর বছর ধরে রেডহ্যাট / সেন্টোস অ্যাডমিন হয়ে আমার এমন কিছু ছিল না - অ্যানাকোন্ডা প্রচুর কাজ করে যা বিনামূল্যে উবুন্টু ইসি 2 উদাহরণটি করে না।

আমি কেবল ওয়েব কনসোলের মাধ্যমে একটি 2 জিবি ভলিউম তৈরি করেছি, এটি আমার দৃষ্টান্তের সাথে সংযুক্ত করেছি এবং "mkswap / dev / [যাই হোক না কেন]" সম্পাদিত / ইত্যাদি / fstab করেছি এবং ক্রাশ বন্ধ হয়ে গেছে।

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


1

সমস্যাটি হ'ল মাইএসকিউএল প্রক্রিয়াটির জন্য বরাদ্দ করার মতো সার্ভারের পর্যাপ্ত মেমরি নেই। এই সমস্যার কয়েকটি সমাধান রয়েছে।

(1) শারীরিক র‌্যাম বাড়ান। অতিরিক্ত 1 জিবি র‌্যাম যুক্ত করা সমস্যার সমাধান করবে। (২) এসডাব্ল্যাপের স্থান বরাদ্দ করুন। ডিজিটাল ওশান ভিপিএস দৃষ্টান্তটি ডিফল্টরূপে সোয়াপ স্পেস ব্যবহার করতে কনফিগার করা হয় না। 512MB অদলবদল বরাদ্দ করে আমরা এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি। আপনার সার্ভারে অদলবদল স্থান যুক্ত করতে, দয়া করে নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

## As a root user, perform the following:
# dd if=/dev/zero of=/swap.dat bs=1024 count=512M
# mkswap /swap.dat
# swapon /swap.dat
## Edit the /etc/fstab, and the following entry.
/swap.dat      none    swap    sw      0       0 

মাইএসকিউএল বাফার পুল আকারের আকার হ্রাস করুন

## Edit /etc/my.cnf, and add the following line under the [mysqld] heading.
[mysqld]
innodb_buffer_pool_size=64M

এছাড়াও আপনার ডিস্ক স্পেস চেক করুন। আপনার পর্যাপ্ত জায়গা আছে তা নিশ্চিত করুন।

df-h


1

সহজেই উত্তর:

* * * * * systemctl is-active --quiet mysqld || systemctl restart mysqld

উত্তর উত্তর:

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

সিস্টেম রিসোর্স স্পাইক যার ফলে র‌্যাম স্পাইকের সৃষ্টি হয় (সন্ধ্যা 6 টার ঠিক আগে) এবং সিস্টেম রিসোর্স স্পাইকের কারণে কেবলমাত্র সিপিইউ স্পাইক মধ্যরাতের মঙ্গলবারে

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

মাইএসকিউএল ম্যানুয়াল - মাইএসকিউএল মেমরিটি কীভাবে ব্যবহার করে:

https://dev.mysql.com/doc/refman/8.0/en/memory-use.html

পারকোনা - অনুকূল মাইএসকিউএল মেমরির ব্যবহারের জন্য কনফিগার করার জন্য সেরা অনুশীলন:

https://www.percona.com/blog/2016/05/03/best-practices-for-configuring-optimal-mysql-memory-usage/

মাইএসকিউএলটিউনার ব্যবহার করে কীভাবে মাইএসকিউএল পারফরম্যান্স অনুকূল করবেন:

https://www.linode.com/docs/databases/mysql/how-to-optimize-mysql-performance- using-mysqltuner/

অ্যাপাচি মেমরি ইউজ কনফিগারেশন:

/server/254436/apache-memory-usage-optimization

পারফরম্যান্স টিউনিং সম্পর্কিত অ্যাপাচি ম্যানুয়াল:

https://httpd.apache.org/docs/2.4/misc/perf-tuning.html

টিউনিং অ্যাপাচি সার্ভার:

https://www.linode.com/docs/web-servers/apache-tips-and-tricks/tuning-your-apache-server/

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

আপনি কোন অপারেটিং সিস্টেম ব্যবহার করছেন তা উল্লেখ করেননি। এটি আপনাকে একটি নির্দিষ্ট আদেশ দিতে সহায়তা করবে। আমি আপনাকে CentOS লিনাক্সের জন্য একটি উদাহরণ দেব।
কমান্ডের নিম্নলিখিত আউটপুটটি দেখুন systemctl status mysql। আপনি শীর্ষে দেখতে পারেন যে পরিষেবাটি লোড এবং সক্রিয়

[root@centos-mysql-demo ~]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-06-18 18:28:18 UTC; 924ms ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 3350 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 3273 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 3353 (mysqld)
   CGroup: /system.slice/mysqld.service
           └─3353 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Jun 18 18:28:11 centos-mysql-demo systemd[1]: Starting MySQL Server...
Jun 18 18:28:18 centos-mysql-demo systemd[1]: Started MySQL Server.

যদি পরিষেবাটি লোড না করা হয়, তবে একটি কমান্ড যেমন:

systemctl status mysqld || systemctl restart mysqld 

প্রক্রিয়াটি পুনরায় শুরু করার কৌশলটি করবে। আপনি পারে যে ক্রন:

* * * * * systemctl status mysqld || systemctl restart mysqld

তবে, যে ক্ষেত্রে মাইএসকিএল লোড হয়েছে তবে পরিষেবাটি সক্রিয় নয় , আপনার ক্রোন কিছুই করবে না। সুতরাং, আপনার আরও বিস্তারিত কমান্ড ব্যবহার করা উচিত যেমন:

* * * * * systemctl is-active --quiet mysqld || systemctl restart mysqld

এই ক্ষেত্রে, যদি পরিষেবাটি লোড করা হয় তবে নিষ্ক্রিয় যেমন যেমন একটি রাষ্ট্র যে কোনও ডস আক্রমণ আপনার মাইএসকিএল পরিষেবা ছেড়ে দিতে পারে তবে কমান্ডটি মাইএসকিএল পুনরায় আরম্ভ করবে। --quietপতাকা ব্যবহার করে কেবল কোনও স্থিতির কোড ফেরত দিতে কমান্ড নির্দিষ্ট করে, পর্দায় কোনও আউটপুট না। আপনি --quietপতাকাটি বাদ দিলে আপনি উভয়ের activeবা একটি এর স্ট্যাটাস আউটপুট দেখতে পাবেনinactive

আপনি আপনার সার্ভারে আরও উপলব্ধ র্যাম সংস্থান যুক্ত করতে কিছু অদলবদল তৈরি করতে পারেন যেমন:

sudo dd if=/dev/zero of=/swapfile count=2096 bs=1MiB
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon --show
swapon --summary
free -h

0

নিম্নলিখিত সমাধানের যে কেউ ব্যবহার করুন:

  1. শারীরিক র‌্যাম বাড়ান। অতিরিক্ত 1 জিবি র‌্যাম যুক্ত করা সমস্যার সমাধান করবে।

  2. নীচের কনফিগারেশনের পরিবর্তনগুলি ব্যবহার করে SWAP স্থান বরাদ্দ করুন:

কনফিগার

dd if=/dev/zero of=/extraswap bs=1024 count=512M
mkswap  /extraswap 
swapon  /extraswap 
## Edit the /etc/fstab, and the following entry.
/extraswap      none    swap    sw      0       0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.