DEV Community

Cover image for SoapUI Yavaş Performans: Nedenleri ve Çözüm Yolları
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

SoapUI Yavaş Performans: Nedenleri ve Çözüm Yolları

TL;DR

SoapUI’nin yavaş performansı, JVM başlangıç ​​yükünden, büyük projeler için çok düşük olan varsayılan bellek ayarlarından ve WSDL ayrıştırma gecikmelerinden kaynaklanmaktadır. Belirli düzeltmeler (yığın boyutu ayarlaması, WSDL önbelleğe alma, proje bölme) hızı önemli ölçüde artırabilir. Ekibiniz bu darboğazları tamamen ortadan kaldıran daha hızlı bir araca ihtiyaç duyuyorsa, Apidog bir Java çalışma zamanı olmadan çalışır.

💡Apidog, JVM yükünü ve bellek ayarlamasını tamamen ortadan kaldıran, tarayıcıda veya hafif masaüstü uygulamasında çalışan ücretsiz, hepsi bir arada bir API geliştirme platformudur. Apidog'u ücretsiz deneyin, kredi kartı gerekmez.

Apidog'u bugün deneyin

Giriş

SoapUI yavaştır. Birkaç haftadan fazla kullandıysanız, 30 saniyelik başlangıcı, büyük bir WSDL'yi ayrıştırırken yanıt vermeyen kullanıcı arayüzünü veya yüzlerce test adımınız olduğunda sürünerek ilerleyen test çalıştırmasını deneyimlemişsinizdir. Bunlar hata değildir. Bunlar SoapUI'nin nasıl inşa edildiğinin doğal bir sonucudur.

Bu makalede, SoapUI'nin yavaş olmasının teknik nedenlerini ve her biri için hızlı, uygulanabilir çözümleri bulacaksınız. Her adımda neleri iyileştirebileceğinizi ve hangi sınırların değiştirilemeyeceğini net şekilde görebilirsiniz.


Temel Neden 1: JVM Başlangıç ​​Yükü

SoapUI bir Java Swing uygulamasıdır. Her açıldığında, Java Sanal Makinesi (JVM) başlatılır, yüzlerce sınıf dosyası yüklenir, Spring framework ayağa kalkar ve proje dosyanız işlenir. SSD'li bir bilgisayarda bu işlem genellikle 20-60 saniye sürer, eski donanımlarda 90 saniyeyi aşabilir.

Neden?

Java uygulamaları, yerel uygulamalardan farklı olarak JVM başlatma maliyeti ve bayt kodu yorumlama/jit derleme gibi ekstra aşamalar içerir.

Nasıl hızlandırılır?

  • SoapUI'yi açık bırakın: En kolay çözüm, testler arasında uygulamayı kapatmamaktır. JVM ısındıktan sonra daha hızlı çalışır.
  • SSD'ye geçin: Döner disk yerine SSD kullanmak, küçük dosya okuma işlemlerinde belirgin hız kazandırır.
  • Java 11 veya 17 kullanın: Daha yeni JVM sürümleri daha hızlı başlar. soapui.bat veya soapui.sh içinde kullanılan JDK yolunu güncelleyin.
  • AppCDS'yi etkinleştirin: JVM argümanlarına aşağıdaki satırı ekleyin:
  -XX:+UseAppCDS -XX:SharedArchiveFile=soapui.jsa
Enter fullscreen mode Exit fullscreen mode

Sınıf veri paylaşımı ile tekrar başlatmalarda önemli hız artışı sağlar.


Temel Neden 2: Varsayılan Bellek Ayarları Çok Düşük

SoapUI, düşük yığın ayarlarıyla gelir. Büyük projelerde veya uzun testlerde JVM sürekli çöp toplama yapar ve uygulama yavaşlar.

Varsayılan Ayarlar:

-Xms128m
-Xmx768m
Enter fullscreen mode Exit fullscreen mode

Yığın boyutunu nasıl artırırsınız?

Windows

<SoapUI_Yükleme_Dizini>/bin/SoapUI.vmoptions dosyasını düzenleyin:

-Xms512m
-Xmx2048m
Enter fullscreen mode Exit fullscreen mode

macOS

SoapUI.app/Contents/vmoptions.txt veya ilgili soapui.sh dosyasını bulun, örnek:

JAVA_OPTS="-Xms512m -Xmx2048m -XX:+UseG1GC"
Enter fullscreen mode Exit fullscreen mode

Linux

<SoapUI_Yükleme_Dizini>/bin/soapui.sh dosyasını değiştirin:

JAVA_OPTS="-Xms512m -Xmx2048m -XX:+UseG1GC"
Enter fullscreen mode Exit fullscreen mode

Ekstra İpuçları:

  • Boş RAM'iniz varsa -Xms değerini 512 MB veya üstüne çıkarın.
  • -Xmx (maksimum yığın) için orta ölçekli projelerde 2 GB, büyük projelerde 4 GB kullanın. Toplam RAM’inizin yarısını aşmayın.
  • Java 9+ için -XX:+UseG1GC ekleyin.
  • Sınıf meta verilerini sınırlandırmak için: -XX:MaxMetaspaceSize=512m

Doğrulama:

SoapUI’yi yeniden başlatın. Yardım > Sistem Özellikleri’nden yığın değerlerini görebilirsiniz. Görev Yöneticisi ile bellek kullanımını izleyin.


Temel Neden 3: Büyük Proje Dosyaları

SoapUI tüm projeyi tek bir XML dosyasında saklar. Büyük projeler, büyük istek gövdeleri veya ikili veriler bu dosyayı şişirir ve performansı düşürür.

Sorun Belirtileri:

  • Kaydetme (Ctrl+S) sırasında takılma.
  • Proje dosyası disk üzerinde birkaç MB büyüklüğünde.
  • Proje açma işlemi 10 saniyeden fazla sürüyor.

Çözümler:

  • Projeleri bölün: Composite Project özelliğini açarak test paketlerini ayrı XML dosyalarında saklayabilirsiniz. Kullanım: Proje > Ayarlar > Kompozit Proje.
  • Kullanılmayan testleri silin: Gereksiz testleri kaldırmak, XML dosyasını küçültür.
  • Büyük istek gövdelerini dışsallaştırın: Satır içi büyük gövdeleri harici dosyalara taşıyın ve Data Source ile yükleyin.
  • "Çıkışta Kaydet" otomatik yedeklemeyi kapatın: Tercihler > UI Ayarları > Çıkışta yedeklemeyi devre dışı bırakın.

Temel Neden 4: WSDL Ayrıştırma Gecikmeleri

SoapUI WSDL dosyalarına proje açılışında veya ağaçta genişletme sırasında tekrar tekrar erişip ayrıştırır. Özellikle WSDL'ler uzaktaysa veya çok büyükse, büyük gecikmeler oluşur.

Belirtiler:

  • Arayüz genişletirken donma veya yükleme göstergesi.
  • Testler başlamadan bağlantı zaman aşımı hataları.
  • Farklı makinelerde farklı yükleme süreleri.

Çözümler:

  • WSDL’leri yerel önbelleğe alın: Arayüze sağ tıklayın > Tanımı Güncelle > URL’yi yerel dosyaya (file://) yönlendirin.
  • Tanım güncellemesini kapatın: Tercihler > WS-Güvenlik Ayarları’nda otomatik WSDL doğrulamasını kapatın.
  • HTTP zaman aşımını artırın: Tercihler > HTTP Ayarları’ndan bağlantı zaman aşımını yükseltin.

Temel Neden 5: Büyük Paketlerde Test Çalıştırma Performansı

Yüzlerce test adımı, karmaşık Groovy betikleri ve yoğun onaylamalar testleri yavaşlatabilir.

Çözümler:

  • Paketleri paralel çalıştırın: TestSuite çalıştırıcısında "Test durumlarını eşzamanlı çalıştır" seçeneğini etkinleştirin. (SOAP endpoint’iniz paralel çağrıları desteklemeli.)
  • Gereksiz onaylamaları kaldırın: Her ek onaylama işlem süresi ekler. Sadece anlamlı kontrolleri bırakın.
  • Groovy betiklerini optimize edin: Yavaş işlemleri betiklerden çıkarın. Ortak kodları proje düzeyinde paylaşın.
  • Yanıt süresi onaylarını dikkatli kullanın: SLA doğrulamaları zaman aşımına kadar bekler, yavaş uç noktalar tüm paketi bloklayabilir.
  • Günlük detayını azaltın: Tercihler > HTTP Ayarları’ndan gereksiz loglamayı kapatın.

Neleri Düzeltemezsiniz?

Bazı performans sorunları SoapUI’nin mimarisinden kaynaklanır ve ayar değişiklikleriyle aşılamaz:

  • Swing UI Render: Her zaman modern web veya yerel uygulamalardan daha yavaş hissedilir.
  • JVM başlatma: Azaltılabilir ama tamamen kaldırılamaz.
  • Tek iş parçacıklı WSDL ayrıştırma: Büyük/karmaşık WSDL’lerde paralellik yoktur.
  • Bellek yükü: JVM, Swing ve Spring minimum 300-400 MB boşta bellek harcar.

Ne Zaman Başka Bir Araca Geçmeli?

Yukarıdaki adımları uyguladınız ama hala darboğaz yaşıyorsanız, araç değişimi gerekebilir.

Apidog, JVM yerine Node.js tabanlı bir web uygulamasıdır. Saniyeler içinde açılır ve test çalıştırmak için Java gerektirmez. Başlangıç süresi ve UI performansı sizin için kritikse, sürekli JVM ayarlamaktansa Apidog’a geçmek daha verimlidir.

Not: Apidog WSDL ayrıştırmaz. Eğer WSDL içe aktarımına bağımlıysanız, yeni servis eklerken SoapUI’yi yedekte tutup, günlük testlerinizi Apidog’da çalıştırabilirsiniz.


Sıkça Sorulan Sorular

Büyük bir proje (50+ test paketi) için önerilen SoapUI yığın boyutu nedir?

16 GB+ RAM’li makinelerde -Xmx en az 2 GB, tercihen 4 GB olmalı. -Xms 512 MB - 1 GB arası. -XX:+UseG1GC ile daha iyi çöp toplama elde edilir.

SoapUI’nin mevcut yığın kullanımını kontrol edebilir miyim?

Evet. Yardım > Sistem Özellikleri altında JVM argümanlarını ve yığın değerini görebilirsiniz. JVM seçeneklerine -verbose:gc ekleyerek geçici olarak çöp toplama loglarını görebilirsiniz.

Daha yeni bir JDK’ya geçmek SoapUI performansını artırır mı?

Çoğu durumda evet. Java 11/17 ile başlatma ve çöp toplama daha hızlı. Ancak eski SoapUI sürümleriyle uyumluluk için sürüm notlarını kontrol edin.

SoapUI neden birkaç saat test çalıştırdıktan sonra yavaşlar?

Bellek parçalanması ve çöp toplama yükü zamanla artar. Kapatıp açmak JVM’i sıfırlar. -Xmx artırımı ve G1GC kullanmak geciktirir, tamamen engellemez.

SoapUI’yi bir sunucuda (başsız modda) çalıştırmak performansı artırır mı?

Kısmen. Başsız mod (-Dorg.uncommons.watchmaker.swing.SwingEvolutionMonitor=false gibi bayraklarla) Swing yükünü azaltır. CI/CD için GUI yerine komut satırı kullanmak daha hızlıdır.

Apidog, büyük koleksiyonları SoapUI’ye kıyasla nasıl yönetir?

Apidog koleksiyonları bulutta saklar, yerel XML dosyası yoktur. Testler JVM başlatmadan yerel CLI ile yürütülebilir.

Çoğu SoapUI performans sorunu çözülebilir. Özellikle yığın boyutu değişikliği hemen hissedilir sonuç verir. Daha karmaşık yöntemlere geçmeden önce bu adımdan başlayın.

Top comments (0)