এনএফএস দুর্বল লেখার কর্মক্ষমতা


20

আমার 10 জিবিথ ইথারনেটের সাথে দুটি মেশিন সংযুক্ত রয়েছে। এর মধ্যে একটি এনএফএস সার্ভার এবং অন্যটি হবে এনএফএস ক্লায়েন্ট।

iperfউভয় দিকে network 9.8 গিগিট / এস থ্রুপুট প্রদর্শন করে টিসিপির মাধ্যমে নেটওয়ার্কের গতি পরীক্ষা করা , সুতরাং নেটওয়ার্ক ঠিক আছে।

এনএফএস সার্ভারের ডিস্কের কার্যকারিতা পরীক্ষা করা:

dd if=/dev/zero of=/mnt/test/rnd2 count=1000000

ফলাফল MB 150 এমবিাইট / সে, সুতরাং ডিস্ক লেখার জন্য ভাল কাজ করে।

সার্ভারটি /etc/exportsহ'ল:

/mnt/test 192.168.1.0/24(rw,no_root_squash,insecure,sync,no_subtree_check)

ক্লায়েন্ট /mnt/testনীচের বিকল্পগুলির সাহায্যে এই ভাগটিকে স্থানীয়ভাবে এটি সরবরাহ করে :

node02:~ # mount | grep nfs
192.168.1.101:/mnt/test on /mnt/test type nfs4 (rw,relatime,sync,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.102,local_lock=none,addr=192.168.1.101)

যদি আমি এনএফএস শেয়ার থেকে ক্লায়েন্ট মেশিনে একটি বৃহত ফাইল (~ 5 জিবি) ডাউনলোড করার চেষ্টা করি তবে আমি -1 130-140 এমবিাইট / এস পারফরম্যান্স পাই যা সার্ভারের স্থানীয় ডিস্কের পারফরম্যান্সের কাছাকাছি, তাই এটি সন্তোষজনক।

তবে আমি যখন এনএফএস শেয়ারে একটি বড় ফাইল আপলোড করার চেষ্টা করি তখন আপলোডটি শুরু হয়। 1.5 এমবিটেস / সে থেকে, ধীরে ধীরে 18-20 এমবিটেস / সেকেন্ডে বেড়ে যায় এবং বাড়তে থাকা বন্ধ করে দেয়। কখনও কখনও শেয়ারটি আপলোডটি শুরু হওয়ার কয়েক মিনিটের জন্য "স্তব্ধ হয়ে যায়" অর্থাত্ হোস্টগুলির মধ্যে ট্র্যাফিক শূন্যের কাছাকাছি হয়ে যায় এবং যদি আমি কার্যকর ls /mnt/testকরি তবে এটি এক বা দুই মিনিটের মধ্যে ফিরে আসে না। তারপরে lsকমান্ডটি ফিরে আসে এবং আপলোডটি এর প্রাথমিক 1.5Mbit / s গতিতে শুরু হয়।

যখন আপলোডের গতি সর্বোচ্চে পৌঁছায় (18-20 এমবিটেস / গুলি), আমি চালিত করি iptraf-ngএবং এটি নেটওয়ার্ক ইন্টারফেসে ~ 190 এমবিট / ট্রাফিক দেখায়, সুতরাং নেটওয়ার্কটি এখানে কোনও বাধা নয়, পাশাপাশি সার্ভারের এইচডিডি।

আমি যা চেষ্টা করেছি:

1. তৃতীয় হোস্টে একটি এনএফএস সার্ভার সেট আপ করুন যা কেবলমাত্র 100Mbit ইথারনেট এনআইসির সাথে সংযুক্ত ছিল। ফলাফলগুলি সাদৃশ্যপূর্ণ: ডিএল ভাল পারফরম্যান্স দেখায় এবং প্রায় সম্পূর্ণ 100 এমবিট নেটওয়ার্কের ব্যবহার দেখায়, আপলোডটি প্রতি সেকেন্ডে কয়েকশো কিলোবাইটের চেয়ে দ্রুত সঞ্চালন করে না, নেটওয়ার্কের ব্যবহার খুব কম (2.5 মিলিটার / সে অনুযায়ী iptraf-ng) রেখে যায়।

২. আমি কয়েকটি এনএফএস প্যারামিটার টিউন করার চেষ্টা করেছি:

  • sync অথবা async

  • noatime

  • না hard

  • rsizeএবং wsizeআমার উদাহরণগুলিতে সর্বাধিক, সুতরাং আমি এগুলি কয়েকটি ধাপে 8192 এ নামিয়ে দেওয়ার চেষ্টা করেছি

৩. আমি ক্লায়েন্ট এবং সার্ভার মেশিনগুলিতে স্যুইচ করার চেষ্টা করেছি (প্রাক্তন ক্লায়েন্ট এবং তার বিপরীতে এনএফএস সার্ভার সেট আপ)। তদুপরি, একই কনফিগারেশনের সাথে আরও ছয়টি সার্ভার রয়েছে, তাই আমি এগুলি একে অপরের কাছে বিভিন্ন প্রকারে মাউন্ট করার চেষ্টা করেছি। একই ফলাফল।

4. এমটিইউ = 9000, এমটিইউ = 9000 এবং 802.3 এড লিঙ্ক সমষ্টি, এমটিইউ = 1500 এর সাথে লিঙ্ক সমষ্টি।

5. সিস্টেস্টল টিউনিং:

node01:~ # cat /etc/sysctl.conf 
net.core.wmem_max=16777216
net.core.rmem_max=16777216
net.ipv4.tcp_rmem= 10240 873800 16777216
net.ipv4.tcp_wmem= 10240 873800 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
net.core.netdev_max_backlog = 5000

একই ফলাফল।

6. লোকালহোস্ট থেকে মাউন্ট:

node01:~ # cat /etc/exports
/mnt/test *(rw,no_root_squash,insecure,sync,no_subtree_check)
node01:~ # mount -t nfs -o sync localhost:/mnt/test /mnt/testmount/

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

এই সমস্ত সাহায্য না করে, ফলাফল ডিফল্ট কনফিগারেশন থেকে উল্লেখযোগ্যভাবে পৃথক হয়নি। echo 3 > /proc/sys/vm/drop_cachesসমস্ত পরীক্ষার আগে মৃত্যুদন্ড কার্যকর করা হয়েছিল।

সমস্ত 3 টি হোস্টের সমস্ত এনআইসিসির এমটিইউ 1500, কোনও মানসম্মত নেটওয়ার্ক টিউনিং সম্পন্ন হয়নি। ইথারনেট স্যুইচ হ'ল ডেল এমএক্সএল 10/40 জিবি।

ওএস হ'ল সেন্টোজ 7।

node01:/mnt/test # uname -a
Linux node01 3.10.0-123.20.1.el7.x86_64 #1 SMP Thu Jan 29 18:05:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

আমি কি সেটিংস অনুপস্থিত? কীভাবে এনএফএস দ্রুত এবং ঝুলন্ত ছাড়াই লিখতে হয়?


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

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

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

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

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

উত্তর:


3

আপনি আপনার রফতানি বিবৃতিতে সিঙ্ক-বিকল্পটি ব্যবহার করেন। এর অর্থ সার্ভার কেবলমাত্র ডিস্কে লেখার পরে লেখার ক্রিয়াকলাপ নিশ্চিত করে। আপনার কাছে একটি স্পিনিং ডিস্ক রয়েছে (যেমন কোনও এসএসডি নেই), এটির জন্য প্রতি লিখন অপারেশনটিতে কমপক্ষে ডিস্কের কমপক্ষে 1/2 বিপ্লব প্রয়োজন, যা মন্দার কারণ।

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

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


+1 সবচেয়ে সম্ভবত ব্যাখ্যাটি হ'ল সিঙ্কটি সঠিকভাবে অক্ষম ছিল না।
ডেভিড শোয়ার্জ

2

এটি প্যাকেটের আকার এবং বিলম্বের সাথে সম্পর্কিত সমস্যা হতে পারে। নিম্নলিখিত চেষ্টা করুন:

রিপোর্ট আপনার ফলাফল ফিরে।


আমি এমটিইউ = 9000 দিয়ে জাম্বো ফ্রেমের চেষ্টা করেছি, তবে ফলাফলগুলি একই ছিল। আমি ৮০২.৩ এডের সাথে লিঙ্ক একীকরণের চেষ্টা করেছি, আবার কোনও পরিবর্তন নেই। তাই সম্ভব হিসাবে ডিফল্ট অবস্থার কাছাকাছি যাওয়ার জন্য আমি এই সমস্ত সেটিংসকে উল্টিয়ে দিয়েছি। এছাড়াও আমি এটি net.core.*এবং net.ipv4.*সিস্টোলগুলি টিউন করার চেষ্টা করেছি, তবে সম্ভবত আমি খুব কম পরীক্ষা-নিরীক্ষা করেছি। ঠিক আছে, আমি আরও কিছু পরীক্ষা করব এবং প্রতিবেদন করব।
সের্গে

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

আপনি কি ইউডিপির সাথে ট্রান্সপোর্ট প্রোটোকল হিসাবে চেষ্টা করেছেন?
shodanshok

আমি ইউডিপি চেষ্টা করেছি (মাউন্ট অপশনগুলিতে প্রোটো = ইউডিপি), তবে এটি টিসিপির চেয়েও কম 1-2 এমবিাইট / গুলি কম কাজ করে। লোকালহোস্ট এবং রিমোট হোস্ট থেকে ফলাফল একই ছিল।
সের্গেই

2

http://veerapen.blogspot.com/2011/09/tuning-redhat-enterprise-linux-rhel-54.html

হার্ডওয়্যার RAID সহ সিস্টেমে লিনাক্সের শিডিয়ুলার কনফিগার করা এবং [সিএফকিউ] থেকে [নুপ] এ ডিফল্ট পরিবর্তন করা I / O উন্নতি দেয়।

পাঠক / লেখার শতাংশ গণনা করতে, nfsstat কমান্ডটি ব্যবহার করুন। ম্যাচের জন্য RAID নিয়ামক ক্যাশে অনুপাত সেট করুন।

ভারী কাজের চাপের জন্য আপনাকে এনএফএস সার্ভার থ্রেডের সংখ্যা বাড়াতে হবে।

No_delay বিকল্পটি ব্যবহার করে ডিস্কে দেরি না করে লিখতে এনএফএস থ্রেডগুলি কনফিগার করুন।

লিনাক্স কার্নেলটিকে যত তাড়াতাড়ি সম্ভব ফ্লাশ করতে বলুন যাতে লেখাগুলি যথাসম্ভব ছোট রাখা হয়। লিনাক্স কার্নেলে, নোংরা পৃষ্ঠাগুলি রাইবব্যাক ফ্রিকোয়েন্সি দুটি পরামিতি দ্বারা নিয়ন্ত্রণ করা যায়।

দ্রুত ডিস্ক লেখার জন্য, ফাইল সিস্টেম ডেটা = জার্নাল বিকল্পটি ব্যবহার করুন এবং ফাইল অ্যাক্সেসের সময় আপডেটগুলি প্রতিরোধ করুন যার ফলস্বরূপ ডিস্কে অতিরিক্ত ডেটা লিখিত হবে in এই মোডটি দ্রুততর হয় যখন ডেটা থেকে একই সময়ে পড়তে হয় এবং লিখিত হওয়া প্রয়োজন যেখানে অন্য সমস্ত মোডকে ছাড়িয়ে যায়

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