আমি কীভাবে কোনও প্রক্রিয়া দ্বারা ব্যবহৃত ব্যান্ডউইথকে সীমাবদ্ধ করতে পারি?


42

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

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

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


কিছু পটভূমি

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

কেন এটি গুরুত্বপূর্ণ? কারণ এটি সম্মানজনক ব্যবহারকে অকার্যকর বলে মনে হবে rsync --bwlimitrsyncআসলে স্থানান্তর করছে না বা এটিও করতে পারে না কারণ আমি ব্যাকআপ ফাইলটি সংরক্ষণ করার জন্য জায়গাটিও ছাড়তে পারি না।

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

গোমরা মুখ



1
আমার পরিস্থিতির জন্য আরেকটি সম্ভাবনা, যা ঘটনাক্রমে নির্দিষ্ট প্রশ্নের সঠিক উত্তর দেয় না , তা হল ioniceএকটি প্রক্রিয়া তৈরি করতে পারে এমন লেখাগুলিকে থ্রোট্ট করার জন্য। যেহেতু আমি কোনও এসএসএফএফএস ফাইল সিস্টেমে লিখছি, তাই ব্যাকআপ প্রক্রিয়াটির ক্লাসটি 3 এ নামিয়ে ফেলতে পারি যাতে এটি লিখতে চায় এমন অন্য কোনও প্রক্রিয়াটিকে পুরোপুরিভাবে পথ দেয়। এইভাবে আমি যে প্রভাবটি চাই তা যা ব্যাকআপ হগিং ব্যান্ডউইথের কারণে কোনও সাইটের দর্শকের অভিজ্ঞতা হ্রাস করতে পারে তা আমি পাই।
ওয়েসলি

একটি প্রশ্ন, আপনার ssh সংক্ষেপণ ব্যবহার করে? আপনার .ssh / কনফিগারেশনে "সংক্ষেপণ হ্যাঁ"?
Zlatko

উত্তর:


25

আপনি iptablesএকটি প্যাকেট চিহ্নিত করতে ব্যবহার করতে পারেন (- পিড-মালিক ...), তারপরে tcট্র্যাফিকটিকে আকার দিতে ব্যবহার করুন । এছাড়াও "--sid-ਮਾਲਕ" থ্রেড এবং সেই প্রক্রিয়াটির শিশুদের অন্তর্ভুক্ত করতে ব্যবহার করা যেতে পারে।

http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#OWNERMATCH

ম্যাচ - পিড-মালিকের
কার্নেল ২.৩, ২.৪, ২.৪ এবং ২.6
উদাহরণ iptables -A OUTPUT -m মালিক --pid- মালিক 78
ব্যাখ্যা এই ম্যাচটি তাদের জন্য দায়ী প্রসেস আইডি (পিআইডি) এর উপর ভিত্তি করে প্যাকেটগুলির সাথে মেলে ব্যবহৃত হয়। এই ম্যাচটি ব্যবহার করা কিছুটা শক্ত, তবে একটি উদাহরণ হ'ল পিআইডি 94 কে এইচটিটিপি পোর্ট থেকে প্যাকেটগুলি প্রেরণ করার অনুমতি দেওয়া (যদি এইচটিটিপি প্রক্রিয়াটি থ্রেড না করা হয় তবে অবশ্যই)। বিকল্পভাবে আমরা একটি ছোট স্ক্রিপ্ট লিখতে পারি যা একটি নির্দিষ্ট ডিমনটির জন্য পিএসআইডি আউটপুট থেকে পিআইডি আঁকড়ে ধরে তার জন্য একটি বিধি যুক্ত করে। উদাহরণস্বরূপ, পিড-মালিক.txt উদাহরণে প্রদর্শিত হিসাবে আপনার একটি বিধি থাকতে পারে


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

@ ওয়েসলি এটিই ম্যান পেজটি বলে না: " --pid-owner processidপ্যাকেটটি যদি প্রদত্ত প্রক্রিয়া আইডি দিয়ে কোনও প্রক্রিয়া দ্বারা তৈরি করা হয়েছিল তবে মিলছে " " linux.die.net/man/8/iptables
Ajedi32

এই উত্তরটি যদি এই উদ্দেশ্যে কীভাবে আইপিটিবল এবং টিসি ব্যবহার করতে হয় তার উদাহরণ অন্তর্ভুক্ত করা যায় তবে এটি আরও ভাল। প্রদত্ত iptables -A OUTPUT -m owner --pid-owner 78উদাহরণটি সম্পূর্ণ বলে মনে হচ্ছে না (কারণ এটি কেবল প্যাকেটের সাথে মেলে, এটি কীভাবে "চিহ্নিত" করতে পারে তা বলে না এবং tcএটি মোটেও ব্যাখ্যা করা হয়নি ) ।
আজেদি 32

একটি প্যাকেট চিহ্নিত করতে আপনার মতো কিছু যুক্ত করতে হবে -j MARK --set-mark 1। আরও তথ্যের জন্য দেখুন: wiki.archlinux.org/index.php/…
মিরেসিয়া ভুটকোভিচি

40

একটি বিকল্প যা আমি সবেমাত্র আবিষ্কার করেছি তা হল ট্রিকল ব্যবহার করা ।

ট্রিকল হ'ল একটি বহনযোগ্য লাইটওয়েট ইউজারস্পেস ব্যান্ডউইথ শ্যাপার। এটি সহযোগী মোডে (একসাথে ট্রিল্ডযুক্ত) বা একা স্ট্যান্ড মোডে চলতে পারে।

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


1
এটিই আমার সমস্যা সমাধান করেছে। বিটকয়েন ডেমন এলোমেলোভাবে আমার সমস্ত ব্যান্ডউইথকে চুষতে সমস্যা হচ্ছিল যখন কোনও ক্লায়েন্ট সিদ্ধান্ত নিয়েছিলেন যে আমি সেই ব্যক্তি সেই লোকটিকে তাদের পুরো ব্লকচেইনটি ডাউনলোড করতে হবে।
সর্বজনীন

আপনি যে trickleলিঙ্কটি দিয়েছেন তা 404 এ পৌঁছেছে
জেরেমিয়া

আমি ভাঙা লিঙ্কটি ঠিক করেছি (এটি একটি ওয়েব্যাক মেশিনের লিঙ্কের পরিবর্তে)।
জি-ম্যান বলছেন 'মনিকা পুনরায় ইনস্টল করুন'


বাsudo apt-get install trickle
ggll

22

আপনি যদি কোনও পাইপে (বা স্টডআউট) লিখতে পারেন তবে আপনি pv(পাইপ প্রদর্শক) কমান্ডটি ইনস্টল করতে পারেন । এটি মূলত পাইপের মাধ্যমে স্থানান্তরিত ডেটার অগ্রগতি প্রদর্শনের জন্য লেখা হয়েছিল।

tar cvf - /files/to/backup | pv -L 512k > /your/file/on/sshfs

   -L RATE, --rate-limit RATE
          Limit the transfer to a maximum of RATE  bytes  per  second.   A
          suffix of "k", "m", "g", or "t" can be added to denote kilobytes
          (*1024), megabytes, and so on.

এটি আসলে আমি উত্তর ব্যবহার করব বলে মনে করি! যাইহোক, আমি প্রাথমিকভাবে জিজ্ঞাসা করা নির্দিষ্ট প্রশ্নের সঠিক উত্তর নয়। হায়, প্রশ্ন আকারের morphed কিন্তু এখনও একটি প্রক্রিয়া নেটওয়ার্ক গতি সীমাবদ্ধ উপর দৃষ্টি নিবদ্ধ ছিল। তবে, আমি জিজ্ঞাসা করা এই নতুন প্রশ্নের ক্ষেত্রে আপনি অবদান রাখতে পারেন: unix.stackexchange.com/q/34174/4232
ওয়েসলি

ধন্যবাদ! আমি একই জিনিস করছিলাম এবং শেষ পর্যন্ত ssh my-remote-server bash -c "'find / -xdev|cpio -o|gzip -c1'"|pv --rate-limit 1M > my-remote-root.cpio.gz
ক্লেক

1
এটি আয়নিসের সাথেও সংযুক্ত করতে পারত তবে এটি নির্দিষ্ট সার্ভারে অনুমোদিত ছিল না। ssh my-remote-server ionice -c3 bash -c "'find / -xdev|cpio -o|gzip -c1'"|pv --rate-limit 1M > my-remote-root.cpio.gz
ক্লেক

6

আমি একই কারণে --bwlimit = KBPS বিকল্পের সাথে rsync ব্যবহার করি।

আমাদের 1 গিগিট ইথারনেট সহজেই আমাদের পুরানো এসসিএসআই 320 ডাস র‌্যাডকে জলাবদ্ধ করতে সক্ষম হয় এবং মূলত ডসের কিছু আমাদের পুরানো প্রোডাকশন বাক্স যা এটির উপর নির্ভর করে তার এনএফএস স্টোরগুলির জন্য।


4

আপনি কীভাবে ডেটা স্থানান্তর করছেন? (এসএসসি? স্কিপ? এসএফটিপি? অন্য কিছু?

rsync আপনাকে ব্যান্ডউইথ সীমাবদ্ধ করতে দেয় (বিকল্পটি দেখুন --bwlimit = KBPS)। আরএসএনসি-এস এস এস - ব্লিমিট ..

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

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