আজ আমি RAID ফাইল সূচক রিফ্রেশ করতে ফাইল সিস্টেম সূচীকরণের জন্য আমার স্ক্রিপ্টটি চালিয়েছি এবং 4 ঘন্টা পরে এটি নিম্নলিখিত ত্রুটির সাথে ক্র্যাশ হয়েছে:
[md5:] 241613/241627 97.5%
[md5:] 241614/241627 97.5%
[md5:] 241625/241627 98.1%
Creating missing list... (79570 files missing)
Creating new files list... (241627 new files)
<--- Last few GCs --->
11629672 ms: Mark-sweep 1174.6 (1426.5) -> 1172.4 (1418.3) MB, 659.9 / 0 ms [allocation failure] [GC in old space requested].
11630371 ms: Mark-sweep 1172.4 (1418.3) -> 1172.4 (1411.3) MB, 698.9 / 0 ms [allocation failure] [GC in old space requested].
11631105 ms: Mark-sweep 1172.4 (1411.3) -> 1172.4 (1389.3) MB, 733.5 / 0 ms [last resort gc].
11631778 ms: Mark-sweep 1172.4 (1389.3) -> 1172.4 (1368.3) MB, 673.6 / 0 ms [last resort gc].
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x3d1d329c9e59 <JS Object>
1: SparseJoinWithSeparatorJS(aka SparseJoinWithSeparatorJS) [native array.js:~84] [pc=0x3629ef689ad0] (this=0x3d1d32904189 <undefined>,w=0x2b690ce91071 <JS Array[241627]>,L=241627,M=0x3d1d329b4a11 <JS Function ConvertToString (SharedFunctionInfo 0x3d1d3294ef79)>,N=0x7c953bf4d49 <String[4]\: ,\n >)
2: Join(aka Join) [native array.js:143] [pc=0x3629ef616696] (this=0x3d1d32904189 <undefin...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/bin/node]
2: 0xe2c5fc [/usr/bin/node]
3: v8::Utils::ReportApiFailure(char const*, char const*) [/usr/bin/node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/bin/node]
5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/bin/node]
6: v8::internal::Runtime_SparseJoinWithSeparator(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/bin/node]
7: 0x3629ef50961b
সার্ভারটি 16 জিবি র্যাম এবং 24 জিবি এসএসডি স্বাপের সাথে সজ্জিত। আমি অত্যন্ত সন্দেহ করি যে আমার স্ক্রিপ্ট মেমরির 36gb ছাড়িয়েছে। কমপক্ষে এটি করা উচিত নয়
স্ক্রিপ্ট ফাইলগুলির মেটাডেটা দিয়ে অবজেক্টের অ্যারে হিসাবে সঞ্চিত ফাইলগুলির সূচক তৈরি করে (পরিবর্তনের তারিখ, অনুমতি, ইত্যাদি, কোনও বড় ডেটা নয়)
এখানে পূর্ণ স্ক্রিপ্ট কোড: http://pastebin.com/mjaD76c3
আমি ইতিমধ্যে এই স্ক্রিপ্টটির সাথে অতীতের অদ্ভুত নোডের সমস্যাগুলি পরীক্ষা করেছি যা আমাকে উদাহরণস্বরূপ বাধ্য করেছিল। স্ট্রিংয়ের মতো বড় আকারের ফাইলগুলিতে কাজ করার সময় নোডের গ্লুইচিং হওয়ায় একাধিক ফাইলগুলিতে বিভক্ত সূচক। বিশাল ডেটাসেট সহ নোডেজ মেমরি পরিচালনার উন্নতি করার কোনও উপায় আছে কি?