ঠিক আছে, মনো এক দুর্দান্ত, তবে যতদূর আমি দেখতে পাচ্ছি এটি অস্থির। এটি কার্যকর হয়, তবে যখন আপনি মনো প্রক্রিয়াটি করার জন্য একটি গুরুতর কাজ দেন ত্রুটিগুলি।
টিএল; ডিআর - আপনি যদি মনো ব্যবহার করেন না:
- মাল্টিথ্রেড পরিবেশে AppDomains (সমাবেশ লোড \ আনলোড) ব্যবহার করুন
- 'লেট-ইট-ব্যর্থ' মডেলটি ধরে রাখতে পারি না
- প্রক্রিয়া চলাকালীন মাঝে মাঝে ভারী-লোড ইভেন্টগুলির অভিজ্ঞতা অর্জন করুন
সুতরাং, ঘটনা।
আমরা আরএইচইল 5, উবুন্টুতে মনো-২.6.net (। নেট v 3.5) ব্যবহার করি এবং আমার দৃষ্টিতে এটি নভেল নির্মিত সবচেয়ে স্থিতিশীল সংস্করণ। এটি অ্যাপলডমিনস আনলোড (সেগফাল্টস) নিয়ে একটি সমস্যা রয়েছে, তবে এটি খুব কমই ব্যর্থ হয় এবং এটি এখন পর্যন্ত গ্রহণযোগ্য (আমাদের কাছে)।
ঠিক আছে. তবে আপনি। নেট 4.0.০ এর বৈশিষ্ট্যগুলি ব্যবহার করতে চাইলে আপনাকে 2.10.x বা 3.x সংস্করণে যেতে হবে এবং এখান থেকেই সমস্যা শুরু হয়।
২.6..7 এর তুলনায় নতুন সংস্করণগুলি কেবল ব্যবহারযোগ্য নয়। আমি মনো ইনস্টলেশন ইনস্টল করার জন্য একটি সাধারণ স্ট্রেস টেস্ট অ্যাপ্লিকেশন লিখেছিলাম
এটি এখানে ব্যবহারের নির্দেশাবলী সহ: https://github.com/head-thrash/stress_test_mono
এটি থ্রেড পুল কর্মী থ্রেড ব্যবহার করে। কর্মীরা অ্যাপডোমাইনকে ডেল করে এবং কিছু গণিত-কাজ করার চেষ্টা করে। কিছু কাজ বহু-থ্রেডযুক্ত, কিছু একক is প্রায় সমস্ত কাজ সিপিইউ-আবদ্ধ, যদিও ডিস্ক থেকে ফাইলগুলির কিছু পাঠ্য রয়েছে।
ফলাফল খুব ভাল হয় না। আসলে, সংস্করণ 3.0.12 এর জন্য:
- sgen GC segfaults প্রায় তাত্ক্ষণিকভাবে প্রক্রিয়া করে
- বোহেমযুক্ত মনো আরও দীর্ঘকাল বেঁচে থাকে (2 থেকে 5 ঘন্টা পর্যন্ত) তবে অবশেষে সেগফাল্টস
উপরে উল্লিখিত হিসাবে, সিগন জিসি কেবল কাজ করে না (উত্স থেকে নির্মিত মনো):
* Assertion: should not be reached at sgen-scan-object.h:111
Stacktrace:
Native stacktrace:
mono() [0x4ab0ad]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x2b61ea830cb0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x2b61eaa74425]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x2b61eaa77b8b]
mono() [0x62b49d]
mono() [0x62b5d6]
mono() [0x5d4f84]
mono() [0x5cb0af]
mono() [0x5cb2cc]
mono() [0x5cccfd]
mono() [0x5cd944]
mono() [0x5d12b6]
mono(mono_gc_collect+0x28) [0x5d16f8]
mono(mono_domain_finalize+0x7c) [0x59fb1c]
mono() [0x596ef0]
mono() [0x616f13]
mono() [0x626ee0]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x7e9a) [0x2b61ea828e9a]
/lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x2b61eab31ccd]
বোহেম সেগফৌলগুলির জন্য - উদাহরণস্বরূপ (উবুন্টু 13.04, উত্স থেকে নির্মিত মনো):
mono: mini-amd64.c:492: amd64_patch: Assertion `0' failed.
Stacktrace:
at <unknown> <0xffffffff>
at System.Collections.Generic.Dictionary`2.Init (int,System.Collections.Generic.IEqualityComparer`1<TKey>) [0x00012] in /home/bkmz/my/mono/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:264
at System.Collections.Generic.Dictionary`2..ctor () [0x00006] in /home/bkmz/my/mono/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:222
at System.Security.Cryptography.CryptoConfig/CryptoHandler..ctor (System.Collections.Generic.IDictionary`2<string, System.Type>,System.Collections.Generic.IDictionary`2<string, string>) [0x00014] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/Crypto
Config.cs:582
at System.Security.Cryptography.CryptoConfig.LoadConfig (string,System.Collections.Generic.IDictionary`2<string, System.Type>,System.Collections.Generic.IDictionary`2<string, string>) [0x00013] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoCo
nfig.cs:473
at System.Security.Cryptography.CryptoConfig.Initialize () [0x00697] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:457
at System.Security.Cryptography.CryptoConfig.CreateFromName (string,object[]) [0x00027] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:495
at System.Security.Cryptography.CryptoConfig.CreateFromName (string) [0x00000] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:484
at System.Security.Cryptography.RandomNumberGenerator.Create (string) [0x00000] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:59
at System.Security.Cryptography.RandomNumberGenerator.Create () [0x00000] in /home/bkmz/my/mono/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:53
at System.Guid.NewGuid () [0x0001e] in /home/bkmz/my/mono/mcs/class/corlib/System/Guid.cs:492
বা (আরএইচইএল 5, মনো এখানে আরপিএম থেকে নেওয়া হবে ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home%3A/vmas%3A/mono-centos5 )
Assertion at mini.c:3783, condition `code' not met
Stacktrace:
at <unknown> <0xffffffff>
at System.IO.StreamReader.ReadBuffer () [0x00012] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.IO/StreamReader.cs:394
at System.IO.StreamReader.Peek () [0x00006] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.IO/StreamReader.cs:429
at Mono.Xml.SmallXmlParser.Peek () [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs:271
at Mono.Xml.SmallXmlParser.Parse (System.IO.TextReader,Mono.Xml.SmallXmlParser/IContentHandler) [0x00020] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/Mono.Xml/SmallXmlParser.cs:346
at System.Security.Cryptography.CryptoConfig.LoadConfig (string,System.Collections.Generic.IDictionary`2<string, System.Type>,System.Collections.Generic.IDictionary`2<string, string>) [0x00021] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptog
raphy/CryptoConfig.cs:475
at System.Security.Cryptography.CryptoConfig.Initialize () [0x00697] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:457
at System.Security.Cryptography.CryptoConfig.CreateFromName (string,object[]) [0x00027] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:495
at System.Security.Cryptography.CryptoConfig.CreateFromName (string) [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/CryptoConfig.cs:484
at System.Security.Cryptography.RandomNumberGenerator.Create (string) [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:59
at System.Security.Cryptography.RandomNumberGenerator.Create () [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Security.Cryptography/RandomNumberGenerator.cs:53
at System.Guid.NewGuid () [0x0001e] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System/Guid.cs:483
at System.Runtime.Remoting.RemotingServices.NewUri () [0x00020] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Runtime.Remoting/RemotingServices.cs:356
at System.Runtime.Remoting.RemotingServices.Marshal (System.MarshalByRefObject,string,System.Type) [0x000ba] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System.Runtime.Remoting/RemotingServices.cs:329
at System.AppDomain.GetMarshalledDomainObjRef () [0x00000] in /usr/src/redhat/BUILD/mono-3.0.3/mcs/class/corlib/System/AppDomain.cs:1363
উভয় ব্যর্থতা কোনওভাবে অ্যাপডোমাইনস যুক্তির সাথে সংযুক্ত, সুতরাং, আপনার মনো থেকে তাদের থেকে দূরে থাকা উচিত।
বিটিডাব্লু, পরীক্ষিত প্রোগ্রামটি এমএস। নেট 4.5.৫ এনভিউতে উইন্ডোজ মেশিনে 24 ঘন্টা কাজ করে, কোনও ব্যর্থতা ছাড়াই।
সুতরাং, উপসংহারে, আমি বলতে চাই - সাবধানতার সাথে মনো ব্যবহার করুন। এটি প্রথম নজরে থেকে কাজ করে তবে সহজেই যখনই ব্যর্থ হতে পারে। আপনার কাছে একগুচ্ছ কোর ডাম্প এবং ওপেনসোর্স প্রকল্পগুলিতে বড় বিশ্বাসের ক্ষতি হবে।