Ek olarak SQL sorgusu sonucunda dönen dataların büyüklüğü de RAM ihtiyacınız 
konusunda size yol gösterecektir. Geçenlerde monitor ettiğim bir SQL sorgusu 20 
GB datadan 115 MB civarında bir data çekti. Böyle büyük bir datanın transfer 
edilmesi de network tarafında sıkıntıya neden olacaktır. Client tarafında 
mümkünse bu kadar büyük bir datayı bir seferde göndermek yerine parçalar 
halinde göndermeyi seçebilirsiniz. Uygulamanın geç cevap vermesine kullanılan 
network de büyük rol oynayacaktır. 2 Gbps kapasiteli bir switch ile 56 Gbps 
kapasiteli bir switch kullanımı arasında çok fark olacaktır.

From: [email protected]
To: [email protected]
Date: Tue, 11 Sep 2012 00:39:04 +0300
Subject: [Linux-programlama] Re: Server-MultiClient Masaüstü Uygulaması






Çözüm 2; bana daha uygulanabilir geliyor. 
----------------

Çözüm 2: Clientlar http-request ile Servar'da index.php'den istedikleri 
bilgiye ulaşılar. Server'da Apache üzerinde bir php script'i olacak. Bu 
script mysql'e bağlı ve kendisine yapılan isteklerden postData'ları alıp
 veritabanı üzerinde çalıştırıp geri bilgi dönecek.



Sorun: Bir tane php dosyası her seferinde mysql'e bağlanıp sql komutunu 
çalıştırıp veriyi gönderiyor request eden client'a ve kapanıyor. Tekrar 
istek geldiğinde yine bağlanıyor. Bir süre sonra max_connection problemi
 yine çıkıyor. Normalde bu şekilde mi çalışıyor yoksa ben mi yanlış 
tasarladım script'i.
----------------------



Ancak mysql ile iletişime geçen php scripti iyi dizayn etmek gerek. Öte 
yandan mysql' e konnekt olup tekrar kapanan bir mysql konnection var 
ise; teorik olarak mysql_max_connection hatasına düşmemesi lazım. Yine 
de aynı anda artan sorgu çeken connectionların sayısında artış olup da 
mysql_max_connection değerini aşıyor olabilir.

Mysql i cluster yapıda çalıştırabilirsin, öte yandan mysql için query cache 
özelliğini aktif hale getirip kullanabilirsin. Bunun için bu adreslere 
bakabilirsin.
http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster.html
http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

Öte yandan; Bir alternatif olarak Application tarafında da clustering 
yapabilirsin. Merkezi servera bir pooling yönetici konulur. Gelen ilk 5000 
connectin dan sonra gelen istekleri 2. sunucuya, 10000 den sonra gelen 
istekleri 3. sunucuya gönderebilirsin. Client tarafına da connection 
sağlandığında hangi sunucudan alacağı (boş sunucu) bilgisi geçilir. Hangi 
server ın boş olduğu bilgisini alan client sorguyu kendisine geçilen müsait 
sunucuya gönderir.

Diğer taraftan server tarafından bir hata aldığında server' ın kaynaklarının ne 
durumda olduğunu görmek, problemin kaynağının tespitinde belki size yol gös
 terebilir. Disklerin (raid)'in durumu, Ram durumu, işlemci durumu bilgiler 
connection arttıkça monitor edilip bir log üzerinde izleyebilirseniz server 
tarafında donanımsal olarak yapılabilecek iyileştirmeler hakkında size yol 
gösterecektir. 512 MB RAM size yetersiz gibi geliyor bana projeniz için. Öte 
yandan server daki işletim sisteminin RAM kullanımı ile ilgili dökümantasyona 
da bir bakmanız da yarar olabilir RAM tarafında bir sıkıntı var ise. 



                                          

_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php                         
                  
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap