delphi 7 + multitreading yardım lazim. +gerekirse ücretli

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
scorpiontr
Üye
Mesajlar: 9
Kayıt: 14 Ağu 2014 07:17

delphi 7 + multitreading yardım lazim. +gerekirse ücretli

Mesaj gönderen scorpiontr »

merhaba.

Bir delphi uygulamam var. Indiy UDP server componenti ile port dinliyorum, gelen veriyi parse ediyorum, eksikleri SQL den select ediyorum. sonra SQL e insert ediyorum. Tek başına 1000-1500 clienti dinleyerek verimli çalışıyor.
Toplam client sayım 15 bin civari, bende aynı exeyi birkac kez baslatıp her birinde farklı port dinleyerek sorunu geçici çözdüm ama bunu yapmak istemiyorum. Tek exe işi halletsin istiyorum, bununda yolu multithreading den geciyor anladıgım kadarı ile.

Port dinle.
Parse et.
SQl den gerekirse bir select.
Olusan veriyi SQL e insert

bu işlemleri threading ile yapmamı saglayabilecek, örnek yapabilecek bir arkadas varmi? Ücretli destekte kabulumdur.

iyi calismalar.
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen PROGRAMADOR »

Fikir vereyim önce, eğer yapamazsanız o zaman kod kısmına el atarız.

Şimdi thread classı oluşturabilirsiniz. Ancak her client için ayrı bir object oluşacağı için fazla thread çalışacak ve bu sefer de fazla thread yüzünden uygulamanız yavaşlayacak.

Bunun yerine önce bir thread oluşturun. Bu threadde diyelim ki 5000 clientlık bir kapasite olsun. 5001'inci client bağlanınca ikinci thread de çalışmaya başlasın, 10001'nci client bağlanınca üçüncü client çalışmaya başlasın. Böylece sürüp gidebilir.

Böyle daha iyi bir performans alabilirsiniz.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
scorpiontr
Üye
Mesajlar: 9
Kayıt: 14 Ağu 2014 07:17

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen scorpiontr »

merhaba,

Her thread bir adet udp server ve her serverada birkac bin limit mi vereyim?
güzel fikir gibi aslında.
Ama thread ile daha önce hiç çalışmadım. Parse ve SQL insert fonksiyonlarimi thread içine mi almam lazim ?
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen ikra »

yanlis yol izliyorsunuz gibime geldi.
dogrusu pooling dir.
thread sayisi client sayisina göre degil, sistem yapisina göre ayarlanmali.
cekirdek sayisi önemlidir.
kıdemsiz üye
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen PROGRAMADOR »

Her client için ayrı bir thread olmasının hatalı olacağını, sistemi yavaşlatacağını önceki mesajımda söylemiştim. Client sayısına göre threadler oluşturulabilir düşüncesindeyim.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
scorpiontr
Üye
Mesajlar: 9
Kayıt: 14 Ağu 2014 07:17

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen scorpiontr »

thread yada thread pool konularına çok çok yabancıyım. o nedenle ne desem boş.
ptesi günü kodumdan threading olmasını istedigim fonksyionu paylasabilirim
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen csunguray »

Bu işlem için bir WEB-SERVICE uygulaması veya DATA-SNAP (eski adı ile MIDAS) uygulaması yazmanızı tavsiye ediyorum.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen G.Arkas »

csunguray yazdı:Bu işlem için bir WEB-SERVICE uygulaması veya DATA-SNAP (eski adı ile MIDAS) uygulaması yazmanızı tavsiye ediyorum.
%100 katılıyorum. O kadar makine için servis çok daha stabil çalışır.
Resim
scorpiontr
Üye
Mesajlar: 9
Kayıt: 14 Ağu 2014 07:17

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen scorpiontr »

webservice yada datasnap için threading olayıne bulaşmama gerek varmı ?
New-> Services seklinde boş bi proje acıp kodlarımı kontrollü şekilde taşımam yeterli olurmu?
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen sadettinpolat »

datasnap pek tavsiye etmiyorum. performans ve stabilite sorunlari mevcut. istediginiz verimi alamayabilirsiniz.
Benim datasnap ile ilgili cok tecrubem olmadi ama belki ince ayarlarla isinize yarar hale gelebiliyordur.
trafik cok yogunsa yine delphi ile yazilmis olan mormot kutuphanesini kullanabilirsiniz.
performans ve stabilite olarak cok daha iyidir.

http://robertocschneiders.wordpress.com ... ity-tests/
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen csunguray »

Eğer programı web servise dönüştürürseniz client ları da yeniden yapılandırmanız gerekecektir.

Delphi ‘de Web Servisleri ve SOAP Uygulamaları
http://aysenlik.blogspot.com.tr/p/delph ... -soap.html
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
scorpiontr
Üye
Mesajlar: 9
Kayıt: 14 Ağu 2014 07:17

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen scorpiontr »

teşekkürler önerileriniz için. inceleyip dönecegim
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen thelvaci »

Indy kendi içinde zaten thread kullanıyor. Burada asıl sorununuz çok fazla client'ın bağlantı kurma isteği olduğunda karşılaşacağınız problem. Her bir client için bir thread demek sistemin kararsız hale gelmesi demektir bir müddet sonra. En basit hali ile 5000 client için 5000 * 1 mb = 5000 mb stack alanı ayrılacaktır. ikra'nın tavsiye ettiği gibi, bu iş için thread pool ve IOCP kullanmalısınız. Bu işin en ideal hali budur, ancak implemente etmesi pek de kolay değildir.
scorpiontr
Üye
Mesajlar: 9
Kayıt: 14 Ağu 2014 07:17

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen scorpiontr »

sorunumu tespit etmek için bir test yaptım.
gelen dataların parse işleminden sonra MSSQL e insert eden procedure'u command out yaptigimda, 15k client sorunsuz baglandı, tüm gelen veriler parse edildi. SQL e yazılmadı tabiki ve yazılım kitlenmedi.
Bu arada SQL server donanımım çok sağlam. 6 SSD diskten oluşan raid, 196 GB ram ve 24 çekirdekli bir sunucu. üzerinde calisan baska bir yazılımda yok.
Sanirim SQL, insert taleplerine yetişemiyor., SQL e insert yapmamı sağlayan procedure'u multi threading e cevirebilsem işe yarar mı?
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: delphi 7 + multitreading yardım lazim. +gerekirse ücretl

Mesaj gönderen PROGRAMADOR »

Dediğiniz gibi socketlerde sorun yoksa Sql threading ile yapmalısınız.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Cevapla