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
