2016-04-07 37 views
0

Ç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

+2

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. –

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?