Çok büyük miktarda küçük java zamanlayıcı iş parçacığı (10k) oluşturan bir web hizmeti oluşturuyorum. Ben OutOfMemoryError: yeni yerel iş parçacığı oluşturamadım önce yalnızca 2k zamanlayıcı iş parçacığı oluşturmak için görünebilir. Bunu nasıl çözebilirim? Tomcat sunucumu çalıştırmak için bir MacBook Pro kullanıyorum. Ulimit (-u) max kullanıcı süreçlerini, eskiden olduğu gibi ikiye katlayacak şekilde yapılandırdım ama yine de aynı sorunu yaşıyorum. Varsa bunu yapmak için seçeneklerim nelerdir?(Tomcat) Web hizmeti: OutOfMemoryError: yeni yerel iş parçacığı oluşturamıyorum
0
A
cevap
5
Web uygulamalarının kendi başına (az sayıda) başlaması için 1012 konu başlıkları - ve daha sonra "zamanlayıcılar" olarak başlaması çoğu zaman bir kötü bir fikirdir? Ciddi anlamda? Oraya gitme.
Ne yapabilirsin?
- Bu parçacıkları oluşturma yeteneğine güvenmeyin.
- Mimarinizi değiştirin! Bu sorunu zaten çözmüş bir zamanlayıcı kütüphanesi kullanın (ör. Quartz veya diğerleri).
- Harici bir kitaplık kullanmak istemiyorsanız (neden yapmadınız?): Zamanlanmış işlemleri planlı olduğunda yürüten tek bir zamanlayıcı iş parçacığı gerçekleştirin. 100 yumurta kaynamaya isteseydim 100 zamanlayıcılar satın almaz, planlanan her operasyonun
için yeni bir iş parçacığı kullanmıyor musunuz?
Yaklaşımınızı yeniden düşünmenizi ve bunları konuyla modellemenize gerçekten ihtiyacınız olup olmadığını düşünmenizi öneririm. Doğru şekilde yapılandırabilseniz bile, iş parçacığının bunun için doğru yaklaşım olup olmadığını sorguluyorum. –