স্থিতিস্থাপক অনুসন্ধানের জন্য vm.max_map_count পরিবর্তন করতে অক্ষম


14

পূর্বইতিহাস

আমার ইলাস্টিকসার্ক এবং সুগারসিআরএম 7 সেন্টস 6.5 এ চলছে। প্রতিদিন আমি একই সমস্যার মুখোমুখি হই: জাভা আউট অফ মেমরি ত্রুটি। এটি ছোট vm.max_map_count মানের কারণে ঘটে 65 65530 কেবল যখন 262144 বাঞ্ছনীয়।

সমস্যা

সমস্যাটি হ'ল ভিএম.ম্যাক্স_ম্যাপ_কাউন্টটি অপরিবর্তনীয় বলে মনে হচ্ছে:

  1. মূলের নীচে পরিবর্তন হচ্ছে

    sudo sysctl -w vm.max_map_count=262144
    

    আয়

    ত্রুটি: কী 'vm.max_map_count' তে অনুমতি অস্বীকার করা হয়েছে

    যদিও

    ps aux | grep java
    

    শুধুমাত্র গ্রেপ প্রক্রিয়া প্রদান করে

  2. ইলাস্টিক অনুসন্ধান শুরুতে পরিবর্তন করা হচ্ছে

    sudo service elasticsearch start
    

    ত্রুটিও ফিরে আসে

    ত্রুটি: কী 'vm.max_map_count' তে অনুমতি অস্বীকার করা হয়েছে

    স্থিতিস্থাপক অনুসন্ধান শুরু হচ্ছে: [ঠিক আছে]

  3. ফাইলের মাধ্যমে ম্যানুয়াল পরিবর্তন (নোংরা-নোংরা হ্যাক):

    sudo vi /proc/sys/vm/max_map_count
    

    কাজ করে না:

    "/ proc / sys / vm / max_map_count" [পঠনযোগ্য] 1 এল, 6 সি

    - INSERT - W10: সতর্কতা: কেবলমাত্র পঠনযোগ্য ফাইল পরিবর্তন করা

    E45: 'পঠনযোগ্য' বিকল্প সেট করা হয়েছে (ওভাররাইডে যুক্ত করুন)

    "/ proc / sys / vm / max_map_count" E212: লেখার জন্য ফাইল খুলতে পারে না

    যদিও

    ls -la /proc/sys/vm/ | grep max_map_count
    

    রিটার্নস

    -rw-r - r-- 1 টি মূল রুট 0 এপ্রিল 10 09:36 সর্বোচ্চ_ম্যাপ_কাউন্ট

    (তবে আমার ধারণা লিনাক্স / প্রো ডিরেক্টরি সম্পর্কে কথা বলার জন্য এটি সাধারণ হতে পারে)

তাহলে আমি কীভাবে এই পরিবর্তনশীলটির মান পরিবর্তন করতে পারি? প্রতি রাতে স্থিতিস্থাপক অনুসন্ধান পুনরায় চালু করা ভাল ধারণা নয় ... বা কমপক্ষে কেউ হয়ত জানেন যে এই ত্রুটিটি কেন ঘটে?


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

দুর্ভাগ্যক্রমে আমি মিরোস্লাভ কোস্করকে জানি না। আমি এটি কীভাবে খুঁজে পেতে পারি?
ভ্যালেন্টিনা

@ মিরোস্লাভকস্কর উল্লেখ করতে ভুলে গেছেন - মেশিনটি অবশ্যই ভার্চুয়াল,
ভ্যালেন্টিনা

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

@ মিরোস্লাভকস্কর ভাল, সরবরাহকারী প্রযুক্তিটির উল্লেখ না করেই উত্তর দিয়েছিলেন যে তারা আমাকে এই সমস্যায় সহায়তা করতে পারে না (এটি বরং যুক্তিসঙ্গত)। আপনার সহায়তার জন্য ধন্যবাদ
ভ্যালেন্টিনা

উত্তর:


13

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

আমি 3 পদ্ধতি দেখাব।

কিছু প্রাক তথ্য:

1) এটি সম্ভব হলে মূল হিসাবে চালানো আরও ভাল।

২) / ইউনিক্সে প্রোক একটি আসল ফাইল সিস্টেম নয়, এটি একটি মেমরি-ইন মেমরি কার্নেল ফাইল সিস্টেম, তবে এটি একটি সাধারণ ডিস্ক ফাইল সিস্টেমের মতো প্রদর্শিত হয়। আপনি এটিকে 'ভুয়া ফাইলসিস্টেম' বা 'বিশেষ ফাইল সিস্টেম' বলতে পারেন, আপনি সেই নকল-ফাইলগুলি ভিআই বা অন্য কোনও সম্পাদক দিয়ে সম্পাদনা করতে পারবেন না, কারণ তারা ফাইল নয়, এগুলি কেবল ফাইলের মতো দেখায়। আমি বহু বছর আগে একই সমস্যা নিয়ে আটকেছি।

তবে তাদের মানগুলি পরিবর্তন করা সহজ, এগুলি সম্পাদনা করার জন্য কেবল অন্য ধরণের 'মেকানিক্স' প্রয়োজন।

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

প্রম্পটে এগিয়ে যান:

    $ su root

রুট পাসওয়ার্ড প্রবেশ করান।

এখন আপনি রুট, চলুন: / proc / sys / vm / max_map_count এর বর্তমান মানটি পরীক্ষা করে দেখুন

    $ cat /proc/sys/vm/max_map_count  
    65536

আসুন এটি পরিবর্তন করুন:

    echo 262144 > /proc/sys/vm/max_map_count

আসুন যাচাই করুন:

    cat /proc/sys/vm/max_map_count
    262144

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

সন্তুষ্ট হলে, আসুন তাদের স্থায়ী করুন:

প্রথম পদ্ধতি:

/etc/rc.local ব্যবহার করে

    vi /etc/rc.local 

সমস্ত পরামিতি rc.local ফাইলের মধ্যে রাখুন, উদাহরণস্বরূপ:

    echo 220000000 > /proc/sys/vm/dirty_background_bytes
    echo 320000000 > /proc/sys/vm/dirty_bytes
    echo 0 > /proc/sys/vm/dirty_background_ratio
    echo 0 > /proc/sys/vm/dirty_ratio
    echo 500 > /proc/sys/vm/dirty_writeback_centisecs
    echo 4500 > /proc/sys/vm/dirty_expire_centisecs
    echo 1 > /proc/sys/net/ipv4/tcp_rfc1337
    echo 10 > /proc/sys/vm/swappiness
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    echo never > /sys/kernel/mm/transparent_hugepage/defrag
    echo 120 > /proc/sys/net/ipv4/tcp_keepalive_time
    echo 0 > /proc/sys/vm/zone_reclaim_mode
    echo deadline > /sys/block/sda/queue/scheduler
    echo 8 > /sys/class/block/sda/queue/read_ahead_kb
    echo 1048575 > /proc/sys/vm/max_map_count

ফাইল সংরক্ষণ করে vi সম্পাদক ছেড়ে দিন।

লগইন প্রম্পট প্রদর্শনের ঠিক আগে, সমস্ত সূচনা পরিষেবা শুরু হওয়ার পরে এই পরামিতিগুলি প্রতিটি রিবুটে সেট করা হবে।

( /etc/rc.local ফাইলটি সমস্ত স্টার্টআপ লিনাক্স পরিষেবাদির পরে কার্যকর করা হয়, এটি ইলেস্টিক সেরাকটি পরিষেবা হিসাবে আগে শুরু করার পরে এটি কাজ করতে পারে না, তবে ভবিষ্যতে প্রয়োজন হলে এই পদ্ধতিটি অন্য সেটআপে কার্যকর হতে পারে, বা আপনি এটি ব্যবহার করতে পারেন) এগুলিকে আপনার ইলাস্টিকআরচ আরআর স্ক্রিপ্টের ভিতরে রেখে, কারণ আরআর স্ক্রিপ্টটি রুট হিসাবে চালিত হয়, তাই থ্রি স্ক্রিপ্টগুলির অভ্যন্তরে এটি একই সিনট্যাক্স ব্যবহার করে)

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

তাদের স্থায়ী করার দ্বিতীয় পদ্ধতি:

প্যারামিটারগুলি এখন লিনাক্সে যে কোনও প্রারম্ভিক পরিষেবা আগে সেট করা হবে।

/Etc/sysctl.conf সম্পাদনা করুন , প্যারামিটার ভিতরে রাখুন

 vm.max_map_count=1048575
 vm.zone_reclaim_mode=0
 vm.dirty_background_bytes=220000000
 vm.dirty_background_ratio=0
 vm.dirty_bytes=320000000
 vm.dirty_ratio=0
 vm.swappiness=10

অন্যদের সাথে চলুন, /etc/sysctl.conf সংরক্ষণ করুন , পরিবর্তনগুলি প্রয়োগ করতে আপনার সার্ভারটি পুনরায় বুট করুন, বা পুনরায় বুট ছাড়াই পরিবর্তনগুলি প্রয়োগ করতে sysctl -p ব্যবহার করুন। রিবুটগুলি জুড়ে তারা স্থায়ী হবে।

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

পরিবর্তে:

  sudo sysctl -w vm.max_map_count=262144

চেষ্টা করে দেখুন:

  echo 262144 | sudo tee /proc/sys/vm/max_map_count

এটি উবুন্টুতে কাজ করে।

যাচাই করুন:

   user@naos:~$ cat /proc/sys/vm/max_map_count
   262144

আশা করি আমি প্রায় এক বছর পুরনো হওয়ায় সমস্যাটি মোকাবেলায় কমপক্ষে 3 টি ভিন্ন বিকল্প দিয়ে আমি কোনওভাবে সহায়তা করেছি;)

শুভেচ্ছা, রাফায়েল প্রডো


3
তারা ইতিমধ্যে এটি করেছে, এবং এটি ব্যর্থ হয়েছিল।
মাইকেল হ্যাম্পটন

1
হাই মাইকেল, হ্যাঁ আপনি ঠিক বলেছেন। আমি প্রথমে বুঝতে পেরেছিলাম যে সমস্যাটি অপারেটিং সিস্টেম সেন্টোস এবং ইউনিক্স ব্যবহারকারী অনুমতিগুলির সাথে সম্পর্কিত, তাই আমি আমার উত্তরটিতে সেই লাইনটি অনুসরণ করেছি followed তবে নতুন তথ্য সমস্যার সমাধানটিকে "হোস্ট" ওপেনভিজেডে রাখে, যা কিছু সেটিংসকে সীমাবদ্ধ করে। আমার জ্ঞান সেন্টোস এবং ভিএমওয়্যার সম্পর্কিত, তবে ওপেনভিজেডে নয়।
ব্যবহারকারী 62739

4

আমি মনে করি আপনার "ভার্চুয়াল মেশিন" আসলে একটি ওপেনজেড কনটেইনার (যা আপনি এটি চালিয়ে যাচাই করতে পারবেন virt-what)।

এই ক্ষেত্রে, আপনি vm.max_map_countসিসেক্টল বা অন্য অনেকগুলি পরিবর্তন করতে পারবেন না । মানগুলি স্থির হয়।

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

joshuajonah 20 অক্টোবর, 2015
এ মন্তব্য করেছে এটি উন্মাদ। আমার ধারণা আমি কেভিএম ভিপিএস-এ পরিবর্তন করতে যাচ্ছি।


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