কীভাবে ইলাস্টিকসার্ক সর্বাধিক মেমরির আকার পরিবর্তন করবেন


100

ইলাস্টিকসার্কের একটি ডিফল্ট কনফিগারেশন সহ আমার কাছে অ্যাপাচি সার্ভার রয়েছে এবং ডিফল্ট কনফিগারেশনে সর্বোচ্চ 1 জিবি আকার রয়েছে everything

ইলাস্টিকসার্কে সঞ্চয় করার মতো আমার কাছে এত বড় সংখ্যক নথি নেই, তাই আমি স্মৃতিটি হ্রাস করতে চাই।

আমি দেখেছি যে -Xmxজাভা কনফিগারেশনে আমাকে প্যারামিটারটি পরিবর্তন করতে হবে , তবে কীভাবে তা আমি জানি না।

আমি দেখেছি আমি এটি কার্যকর করতে পারি:

bin/ElasticSearch -Xmx=2G -Xms=2G

তবে যখন আমি ইলাস্টিকসার্টটি পুনরায় চালু করতে হবে এটি হারিয়ে যাবে।

যখন ইলেস্টিকসার্চ কোনও পরিষেবা হিসাবে ইনস্টল থাকে তখন কি সর্বোচ্চ মেমরির ব্যবহার পরিবর্তন করা সম্ভব?


কি অপারেটিং সিস্টেম এবং সংস্করণ? ইলাস্টিক সার্চ সংস্করণ? আপনি কীভাবে ইলাস্টিকসার্ক ইনস্টল করলেন?
জেমস অ্যাডিসন

4
আপনি প্রতিরূপ এবং শার্ডের সংখ্যা কমিয়ে আনতে চাইতে পারেন যেহেতু 1 টি নোড সেটআপের কোনও উল্টোপাল্টা নেই, index.number_of_shards: 1 index.number_of_replicas: 0 এটিকে /etc/elasticsearch/elasticsearch.yaml এ যুক্ত করুন: এইভাবে আপনি অযৌক্তিক কাজ না করে স্মৃতি এবং সিপিইউতে সংরক্ষণ করুন ।
neo112

উত্তর:


129

ইন ElasticSearch> = 5 ডকুমেন্টেশন হয়েছে পরিবর্তিত , যার মানে উপরে উত্তর কেউ আমার জন্য কাজ করেন।

আমি ES_HEAP_SIZEভিতরে /etc/default/elasticsearchএবং ভিতরে পরিবর্তন করার চেষ্টা করেছি etc/init.d/elasticsearch, কিন্তু যখন আমি ps aux | grep elasticsearchআউটপুটটি চালাই তখনও এটি প্রদর্শিত হয়েছিল:

/usr/bin/java -Xms2g -Xmx2g # aka 2G min and max ram

আমাকে এই পরিবর্তনগুলি করতে হয়েছিল:

/etc/elasticsearch/jvm.options

# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms1g 
-Xmx1g 
# the settings shipped with ES 5 were: -Xms2g
# the settings shipped with ES 5 were: -Xmx2g

4
এবং ম্যাক ওএস 10.12 এ ইলাস্টিকসার্ক 5.2 এর জন্য আমি এই ফাইলটি খুঁজে পেয়েছি/usr/local/opt/elasticsearch/libexec/config/jvm.options
ভিক্টরপলকো

4
আমি এই কাজগুলি অমি অমি উদাহরণের জন্য নিশ্চিত করতে পারি (আরপিএম সহ ইনস্টল করা) তবে প্রথম সেট করুন MAX_LOCKED_MEMORY = আনলিমিটেড ইন / etc / sysconfig / ইলাস্টিকসার্ক এবং বুটস্ট্র্যাপ.মেমরি_লক: সত্য /etc/elasticsearch/elasticsearch.yml
মর্চ

4
এই উইন্ডোজে কাজ করে না - সঠিক উত্তরের এখানে: stackoverflow.com/questions/28798845/...
CBP

4
/usr/local/etc/elasticsearch/jvm.options
হোমব্রিউ

117

24 নভেম্বর, 2016 এ আপডেট হয়েছে : ইলাস্টিকসर्च 5 দৃশ্যত জেভিএম কনফিগার করার উপায় পরিবর্তন করেছে। এই উত্তরটি এখানে দেখুন । নীচের উত্তরটি এখনও <5 সংস্করণে প্রযোজ্য।

tirdadc, নীচের আপনার মন্তব্যে এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।


আমার কাছে একটি পেস্টবিন পৃষ্ঠা রয়েছে যা আমি অন্যদের সাথে মেমরি এবং ইএস নিয়ে ভাবছি share এটি আমার জন্য ঠিক আছে: http://pastebin.com/mNUGQCLY । আমি এখানে লিখিত সামগ্রীগুলিও পেস্ট করব:

তথ্যসূত্র:

https://github.com/grigorescu/ ব্রাউনিয়ান / উইকি / ইলাস্টিক অনুসন্ধান- কনফিগারেশন http://www.elasticsearch.org/guide/references/setup/installation/

মেমরি এবং ফাইল নম্বর সীমা পরিবর্তন করতে নিম্নলিখিত ফাইলগুলি সম্পাদনা করুন। এই নির্দেশাবলী উবুন্টু 10.04 ধরে নিয়েছে, পরবর্তী সংস্করণ এবং অন্যান্য বিতরণ / ওএসে কাজ করতে পারে। ( সম্পাদনা করুন : এটি উবুন্টু 14.04-তেও কাজ করে)

/etc/security/limits.conf :

elasticsearch - nofile 65535
elasticsearch - memlock unlimited

/ ইত্যাদি / ডিফল্ট / ইলাস্টিকসেরাচ (সেন্টোস / আরএইচ: / ইত্যাদি / সিসকনফিগ / ইলাস্টিকসেরাচে) :

ES_HEAP_SIZE=512m
MAX_OPEN_FILES=65535
MAX_LOCKED_MEMORY=unlimited

/etc/elasticsearch/elasticsearch.yml :

bootstrap.mlockall: true

4
এটি দেখতে ভাল লাগছে। ES_HEAP_SIZE কী হওয়া উচিত তা নির্ধারণ করার জন্য আমারও নিম্নলিখিত পরামর্শ রয়েছে: থাম্বের নিয়মটি হল যে ইলাস্টিক অনুসন্ধানের মাপটিতে মেশিনে উপলব্ধ মেমরির প্রায় 50% থাকা উচিত। ইলাস্টিকসন্ধান সিস্টেমে ক্যাচগুলি ভারী ব্যবহার করে, তাই আপনার তাদের জন্য পর্যাপ্ত স্মৃতি ছেড়ে দেওয়া উচিত। ( asquera.de/opensource/2012/11/25/… থেকে )
টম

17
CentOS এ, আপনি যে কনফিগারগুলি উল্লেখ করেছেন সেগুলি আমি /etc/defaultetc / etc / sysconfig 'এর অধীনে
বসেছি

4
CentOS /etc/sysconfig/elasticsearchএ এই পরিবর্তনগুলি করার উপযুক্ত জায়গা। আরপিএম এমনকি এই ফাইলটির একটি ডিফল্ট সংস্করণও সরবরাহ করে।
slm

4
এটি আর ইলাস্টিকের অনুসন্ধান 5 এর জন্য প্রযোজ্য নয়, আপনার এই উত্তরটির প্রয়োজন ।
tirdadc

4
এটি দেখতে দুর্দান্ত লাগছে, তবে আমি বিশেষভাবে /etc/security/limits.d/elasticsearch.conf
ইলাস্টিক অনুসন্ধান

26

যে কেউ সেন্টোস 7 এ এটি করতে বা অন্য কোনও সিস্টেমডিএসডি চালিত খুঁজছেন, আপনি এটি এটিকে পরিবর্তন করেন

/etc/sysconfig/elasticsearch 

ES_HEAP_SIZE লাইনটি মন্তব্য করুন এবং একটি মান সেট করুন, যেমন:

# Heap Size (defaults to 256m min, 1g max)
ES_HEAP_SIZE=16g

(1 জি সর্বোচ্চ সম্পর্কে মন্তব্য উপেক্ষা করুন - এটি ডিফল্ট)


আমার যোগ করা উচিত: আমি
সেন্টোস on-

4
@ জোনস আমি নিশ্চিত করতে পারি না যে আমি কী প্রস্তাব করতে পারি - আমি সেন্টস 7 এ ইএস আরপিএম প্যাকেজ থেকে ES 1.7.1 চালাচ্ছি এবং এই ফাইলটি যে পথে রয়েছে সেটিই ইএস_এইপিএসআইএসইজেজে পরিবর্তন হিসাবে কাজ করে।

9

জন্য নির্দেশাবলী ubuntu 14.04:

sudo vim /etc/init.d/elasticsearch

সেট

ES_HEAP_SIZE=512m

তারপরে:

sudo vim /etc/elasticsearch/elasticsearch.yml

সেট করুন:

bootstrap.memory_lock: true

আরও তথ্যের জন্য ফাইলগুলিতে মন্তব্য রয়েছে


9

পূর্ববর্তী উত্তরগুলি আমার ক্ষেত্রে অপর্যাপ্ত ছিল, সম্ভবত কারণ আমি ডেবিয়ান 8 এ আছি, যখন তাদের পূর্ববর্তী কিছু বিতরণ হিসাবে উল্লেখ করা হয়েছিল।

উপর ডেবিয়ান 8 সংশোধন সেবা স্ক্রিপ্ট স্বাভাবিকভাবে স্থান /usr/lib/systemd/system/elasticsearch.service, এবং যোগ Environment=ES_HEAP_SIZE=8G শুধু অন্যান্য "পরিবেশ = *" লাইন থেকে কম।

এখন পরিষেবা স্ক্রিপ্টটি পুনরায় লোড করুন এবং পরিষেবাটি পুনরায় systemctl daemon-reloadচালু করুন। কাজটি করা উচিত!


4
ধন্যবাদ, আপনি আমার দিন বাঁচান! হ্যাঁ, এটি ডেবিয়ান 8
দ্রুত

এটিকে কনফিগার করার পরিবর্তে কোনও ফাইলের মধ্যে পরিবর্তন ছাড়া আর কোনও জায়গা নেই /usr/?
মার্টিন শ্রাইডার

6

আপনি যদি https://github.com/elasticsearch/elasticsearch-servicewrapper পাওয়া যায় ইলাস্টিকসার্কের গিথুব সংগ্রহস্থলে প্রদত্ত পরিষেবা র‌্যাপার ব্যবহার করেন, তবে ইলাস্টিক -সার্ভারওয়্যার্পার / পরিষেবা / ইলাস্টিকআরসি.সিএনএফ-এ থাকা কনফি ফাইলটি মেমরি সেটিংস নিয়ন্ত্রণ করে। ইলাস্টিকসেকার্ন.কোনফের শীর্ষে একটি প্যারামিটার রয়েছে:

set.default.ES_HEAP_SIZE=1024

ইলাস্টিকসার্কের বরাদ্দ হওয়া মেমরিটি হ্রাস করতে কেবল এই প্যারামিটারটি হ্রাস করুন, "set.default.ES_HEAP_SIZE = 512" বলুন।

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

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


4
আপনার যদি কোনও পরিষেবা না থাকে তবে কী হবে? (অর্থাত্ কেবল বিন / স্থিতিস্থাপক-চালান চালান)
হেনলি চিউ


@ হেনলিচিউ তারপরে এটি চালানোর আগে কেবল ES_HEAP_SIZE পরিবেশের পরিবর্তনশীল সেট করুন। যেমনexport ES_HEAP_SIZE=1G; bin/elasticsearch -d
অ্যান্ড্রে রেজেন্টভ

ES 1.7.x স্টক ইলাস্টিকসার্চ.কনফ (সেন্টোসে আরপিএম দ্বারা ইনস্টল করা একটি), কোনও সেট.ডেফল্ট নেই। এই পদ্ধতির কি 1.7 ES কাজ করে?
জোনসোম পুনরায় ইনস্টল করুন মনিকা

উপরের উত্তরটি বিভ্রান্তিকর। ES_HEAP_SIZE / etc / sysconfig / elasticsearch এ সেট করুন
জোনসোম রিইনস্টেট মনিকা

6

যদি আপনি সরবরাহিত RPM / DEB প্যাকেজগুলি ব্যবহার করে ES ইনস্টল করেন (যেমন আপনার কাছে মনে হয়), আপনি init স্ক্রিপ্টটি সম্পাদনা করে এটি সমন্বয় করতে পারেন ( /etc/init.d/elasticsearch on RHEL/CentOS)। আপনার যদি ফাইলটিতে নজর থাকে তবে আপনি নীচের সাথে একটি ব্লক দেখতে পাবেন:

export ES_HEAP_SIZE
export ES_HEAP_NEWSIZE
export ES_DIRECT_SIZE
export ES_JAVA_OPTS
export JAVA_HOME

আকার সামঞ্জস্য করতে কেবল ES_HEAP_SIZEলাইনটি নিম্নলিখিতটিতে পরিবর্তন করুন :

export ES_HEAP_SIZE=xM/xG

(যেখানে এক্স এমবি / জিবি র‌্যামের সংখ্যা যা আপনি বরাদ্দ করতে চান)

উদাহরণ:

export ES_HEAP_SIZE=1G

1 জিবি বরাদ্দ হবে।

একবার আপনি স্ক্রিপ্ট সম্পাদনা করে, সংরক্ষণ করুন এবং প্রস্থান করুন, তারপরে পরিষেবাটি পুনরায় চালু করুন। নিম্নলিখিতটি চালিয়ে এটি সঠিকভাবে সেট করা হয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন:

ps aux | grep elasticsearch

এবং জাভা প্রক্রিয়াতে -Xms এবং -Xmx পতাকাগুলির জন্য পরীক্ষা করা যা প্রত্যাবর্তন করবে:

/usr/bin/java -Xms1G -Xmx1G

আশাকরি এটা সাহায্য করবে :)


4
এইভাবে করবেন না। এই ধরণের পরিবর্তনগুলি করার পক্ষে এটি ভাল জায়গা নয়। এটি একটি দৈত্য হ্যাক! কার্যকর কাজ, তবে যখনই ইএস আপডেট করা হবে তখন এটি সম্ভাব্যভাবে ট্র্যাশ হয়ে যাবে।
slm

4
আমার যুক্ত করা উচিত: আমি সেন্টোস 7 এ ES 1.7 এ উপরোক্ত পদ্ধতির চেষ্টা করেছি এবং এর কোনও প্রভাব ছিল না।
জোনসোম পুনরায় ইনস্টল করুন মনিকা

3
  • ইলাস্টিকসার্চটি এক্সএমএস (ন্যূনতম হিপ আকার) এবং এক্সএমএক্স (সর্বাধিক হিপ আকার) সেটিংসের মাধ্যমে jvm.options এ উল্লিখিত পুরো হ্যাপটি নির্ধারণ করবে।
    • -এক্সএমএক্স 12 জি
    • -এক্সএমএক্স 12 জি
  • একে অপরের সমান হতে সর্বনিম্ন হ্যাপের আকার (এক্সএমএস) এবং সর্বাধিক হ্যাপের আকার (এক্সএমএক্স) সেট করুন।
  • জেভিএম সংক্ষেপিত অবজেক্ট পয়েন্টার (সংকোচিত ওফস) এর জন্য কাটঅফের উপরে এক্সএমএক্স সেট করবেন না, সঠিক কাটঅফটি পরিবর্তিত হয় তবে 32 জিবি এর কাছাকাছি।

  • পরিবেশের ভেরিয়েবলের মাধ্যমে গাদা আকার নির্ধারণ করাও সম্ভব

    • ES_JAVA_OPTS = "- Xms2g -Xmx2g" ./bin/elasticsearch
    • ES_JAVA_OPTS = "- Xms4000m -Xmx4000m" ./bin/elasticsearch

এছাড়াও শারীরিক র্যামের 50% এর বেশি নয়
আচি এমনকি-দার

হাই কীভাবে আমি পরিবেশের পরিবর্তনশীল এটির মতো সেট করি ari পরিবর্তনশীল নামটি ES_JAVA_OPTS এবং মান: "-Xms2g -Xmx2g" //bin/elasticsearch
মানিকান্দন

এছাড়াও আমি কীভাবে নিশ্চিত করব, গাদা আকার সঠিকভাবে আপডেট হয়েছে
মানিকান্দন

2

ইলাস্টিক অনুসন্ধানের পথে হোম ডির অর্থাৎ সাধারণত /usr/share/elasticsearch, একটি কনফিগার ফাইল রয়েছে bin/elasticsearch.in.sh। পরামিতি সম্পাদনা ES_MIN_MEM, ES_MAX_MEMপরিবর্তন এই ফাইলের মধ্যে -Xms2g, -Xmx4gযথাক্রমে। এবং দয়া করে নিশ্চিত করুন যে আপনি এই কনফিগার পরিবর্তনের পরে নোডটি পুনরায় চালু করেছেন।


1

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


1

স্থিতিস্থাপক অনুসন্ধান 2.x এ:

vi /etc/sysconfig/elasticsearch 

কোড ব্লক যান

# Heap size defaults to 256m min, 1g max
# Set ES_HEAP_SIZE to 50% of available RAM, but no more than 31g
#ES_HEAP_SIZE=2g

সর্বশেষ লাইনের মত মন্তব্য করা হয়নি

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