Datasnap Server bir süre sonra çalışmayı durduruyor?

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7574
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Datasnap Server bir süre sonra çalışmayı durduruyor?

Mesaj gönderen mussimsek »

Merhaba,

Datasnap server üzerinden, ufak bir mobil uygulama yaptım.

Server tarafı : Standalone .exe program, Datasnap, DBX ve SQL Server.
Android/iOS Client tarafında : TClientDataset ve FMX kullandım.

Önceden 40-50 civarında kullanıcı kullanıyordu ve sıkıntı yoktu. Ancak biraz büyüyünce, uygulamayı daha fazla kişi kullanmaya başladı. Ancak 400-500 client'e çıkınca, datasnap server bir süre sonra yanıt vermeyi durdurmaya başladı. Yanıt vermeyi durdurunca, server'ı kapatıp açıyorum. Kullanıcılar işlem yapabilmeye başlıyor. Bir gün kadar sonra yine tıkanıyor. Her gün restart etmek zorunda kalıyorum.

Server tarafında session'lar Sanıyorum açık kalıyor. Açık kalan bu bağlantıları nasıl yok edebilirim? + Yapabileceğim başka iyileştirmeler var mıdır?

Teşekkür ederim.
ertank
Kıdemli Üye
Mesajlar: 1611
Kayıt: 12 Eyl 2015 12:45

Re: Datasnap Server bir süre sonra çalışmayı durduruyor?

Mesaj gönderen ertank »

Merhaba,

Şahsen her fırsatta Datasnap çözümünden uzak durun diyorum. Özellikle yük altına girdiğinde çok ciddi sorunlar ortaya çıkmaya başlıyor ve çözümü pek mümkün olmuyor. Halen devam ediyor mu bilmiyorum ancak hafıza kaçakları olduğu da biliniyor.

Ben şu ana kadar MARS-Curiosity'den çok memnunum. Yıllardır kullanan müşterilerim var. Henüz hiç şikayet almadım. Müşteri kullanıcı sayılarını takip etmiyorum ancak aynı anda dinleme yapacak thread sayısı INI parametresi olarak ayarlanabiliyor.
https://github.com/andrea-magni/MARS

MARS-Curiosity FMX bileşenleri de sunması adına yine sizin uygulama güncellemenizi ve sunucu geçişinizi daha rahat yapabileceğiniz bir çözüm diye düşünüyorum. Hatta, uygun koşullar altında hiç değişiklik yapmadan, sadece sunucu tarafını MARS kullanımına geçirmeniz mümkün olabilir. Bunun için kullanılan uç noktaları ve gelen parametreler/giden verileri incelemek ve sunucu kodunda uyarlamak gerekli.

Datasnap yük performansı ile ilgili aşağıdaki bağlantıyı incelemenizi tavsiye ederim. Datasnap ile ciddi bir süre detaylı ilgilenmişler.
https://robertocschneiders.wordpress.co ... ity-tests/

Alternatifler bağlantıda listeleniyor. mORMot bunlardan bir tanesi. mORMot2 sürümü yakın zaman önce stabil olarak yayınlandı. Kullanımı biraz daha pratikleştirilmiş olabilir ancak öğrenme süreci bana halen yavaş ve zorlu geliyor. Bunun yanında performansı çok iyi bir ORM kütüphanedir. mORMot2 testlerde saniyede 1milyon istek cevaplar hale getirilmiş durumda. Bu test bağlantılarını bulamadım.

Kısacası en kısa sürede sunucu tarafı çözümünüzü değiştirmenizi tavsiye ederim.
ertank
Kıdemli Üye
Mesajlar: 1611
Kayıt: 12 Eyl 2015 12:45

Re: Datasnap Server bir süre sonra çalışmayı durduruyor?

Mesaj gönderen ertank »

Eklemeden geçmek istemedim. Bağlantısını verdiğim makalenin devamı var. Sonuna kadar okumayan birisi kaçırabilir.

https://robertocschneiders.wordpress.co ... ts-part-2/

İkinci bölümde Embarcadero'dan gelen bilgiler/güncellemeler ile testler tekrarlanıyor. Sonuç değişmiyor tabi. Dataspan için sadece küçük ölçekli kullanım tavsiye ediliyor.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7574
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: Datasnap Server bir süre sonra çalışmayı durduruyor?

Mesaj gönderen mussimsek »

Merhaba,

Haklısınız. Ben de araştırmalarımda Mars ve Mormot'u gördüm ama ortada çalışan bir proje var. Client/server tarafı rest tabanlı olmadığı için, yeni bir öğrenme, test ve yayınlama süreci olacak, zaman alacak bir süreç. Tüm süreçleri tamamiyle test etmeden devreye alınamayacak.

500 client çok fazla bir rakam olmasa gerek. Birkaç iyileştirme ile önümüzdeki süreçte çok sıkıntı çıkartmadan geçiş düşünüyorum.

Windows tarafında, TCP/IP ile alakalı bir takım ayarlar vermişler. Akşam bir deneyeceğim.
ertank
Kıdemli Üye
Mesajlar: 1611
Kayıt: 12 Eyl 2015 12:45

Re: Datasnap Server bir süre sonra çalışmayı durduruyor?

Mesaj gönderen ertank »

mussimsek yazdı: 11 Eyl 2023 03:23 500 client çok fazla bir rakam olmasa gerek.
Verdiğim bağlantılardan ilkinde 50 ve 100 simültane istemci testinde DataSnap hata verip çöküyor.
mkysoft
Kıdemli Üye
Mesajlar: 3100
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Datasnap Server bir süre sonra çalışmayı durduruyor?

Mesaj gönderen mkysoft »

Kisa yoldan su yapilabilir belki. nginx ya da haproxy ile bir proxy katmani ekleyin. uygulamanizi paralel olarak farkli portlardan birden fazla calistirin. clientler proxy portuyla baglansin. eger uygulamalardan biri cokerce proxy otomatik digerine yonlendirir, yuk dengeleme de yapar. belki bir gozcu uygulama yazip, islemci kullanmayan yada hata veren uygulama tekrar calisitirilabilir. gerci bu kisim icin windows servis olarak da yazilabilir.
ertank
Kıdemli Üye
Mesajlar: 1611
Kayıt: 12 Eyl 2015 12:45

Re: Datasnap Server bir süre sonra çalışmayı durduruyor?

Mesaj gönderen ertank »

mussimsek yazdı: 11 Eyl 2023 11:38 Server tarafında session'lar Sanıyorum açık kalıyor. Açık kalan bu bağlantıları nasıl yok edebilirim?
Paylaştığım ikinci bağlantıda session açık kalması konusu ile ilgili aşağıdaki kod örneği paylaşılmış. Sizin için çözüm olur mu bilmiyorum. Ancak çözüm olsa dahi halen daha yüksek kullanıcı sayısına ulaşılırsa başka sorunlar yaşamamak adına REST tabanlı bir platform geçişi yapmayı planlamanızda fayda olduğuna inanıyorum.

Kod: Tümünü seç

uses
  System.StrUtils,
  DataSnap.DSSession,
  Data.DBXPlatform;

function TServerMethods1.HelloWorld: String;
begin
  Result := 'Hello World';
  GetInvocationMetaData.CloseSession := True;
end;
Kod örneğindeki son satır session kapanmasına ve kullandığı hafızayı boşaltmaya yaradığı bildirilmiş. Buna rağmen Datasnap içindeki hafıza kaçaklası sebebiyle hafıza tüketimi zaman içinde artıyor olduğu da bildirilmiş. Farklı bir ifade ile "sadece kaçınılmaz sonu geciktirecektir"
Cevapla