Showing posts with label optimizasyon. Show all posts
Showing posts with label optimizasyon. Show all posts

Wednesday, March 28, 2012

Close Mongo Connections!

MongoDb makinemde mongostat ile baktığımda gördüğüm connection sayısı  500 civarındaydı.
  

faults locked % idx miss %  conn   
     0      0.5          0   576   
     0      2.7          0   579   
     0      0.6          0   580   
     0      0.3          0   583   
     0      2.7          0   585   
     0      0.4          0   586



PHP tarafında sadece kapatmadığım mongodb bağlantılarını kapatarak bu sayının 30'a düştüğünü gördüm. Get performansında da beklediğim üzere büyük artış oldu.

Şu an da mongostat çıktısı

  qr|qw   ar|aw  conn       time
    0|0     0|0    34   10:40:10
    0|0     0|0    34   10:40:11
    0|0     0|0    35   10:40:12
    0|0     0|0    35   10:40:13
    0|0     0|0    35   10:40:14


Sunday, February 19, 2012

MongDb Disk Temizligi

Ozellikle disk alaninizin neredeyse yarisini kaplayan bir veritabaniniz varsa collection sildiktan sonra mutlaka
db.repairDatabase()

calistirmayi unutmayin yoksa bos yere sildiginiz collection icin ayrilmis alan diskinizde yer kaplayacak.

Mevzu uzerine sunu da okuyun tabi http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

Tuesday, February 14, 2012

MongoDb ile Aşırı Disk Kullanımı ve Sonrasında Optimizasyon

Senaryomuz su :
MongoDb diskiniz %88 doldu. Makineye yeni bir dik takamiyorsunuz. Gereksiz buyuk boyutlu collectionlar var ve siz bu gereksiz collection'lari sildiniz.
db.col1.drop()
db.col2.drop()
db.col3.drop()
Veri buyuklugunun neredeyse yaridan fazlasini sildiginizi dusunurken hala %88 doluluk orani sizi sasirtti zira mongodb bir takim disk ve indexleme performansi kurallari geregi sildiginiz datanin kapladigi alani diskte hala ayrilmis olarak tutar. Bunun icin collection'lari silmeden once bosaltip ardinddan db.col1.runCommand("compact") calistirmaniz gerekirdi ama artik silindi ve bunu calistirinca hata veriyor (ve tabiki ayni adda bos bir collection acip calistirmak anlamsiz olacaktir).
Bu durumda veri tabanina repair komutu vermek gerekecek ancak bu da kullanimda olan disk alanini kadar bos alana ihtiyaca ihtiyac duyacaktir ve hata verecektir. Bu durumda yapilmasi gereken sey (eger bir disk ekleyemiyorsaniz) elinizdeki var olan datasinin gercekte diskin yarisindan kucuk bir alana sigdigini dusundugunuz veritabanina :

1. db.copyDatabase("db1","db1back") 
2. use db1 
3. db.dropDatabase() 
4. db.copyDatabase("db1back","db1") 
5. use db1back 
6. db.db1() 

19G lik veri icin ortalama yarim saat surdugunu ve hakli olarak bu sirada gelen insert ve find komutlarina cevap vermedgini de ekleyim.

Ek olarak okunmalidir  ki  http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

Wednesday, May 26, 2010

hız önemli mîrim

json_encode ve serialize arasındaki hız farkını bir de ben test etmek istedim hepsi bu.
Bendeki sonuç şuydu
JSON encoded in 0.17906808853149 seconds
PHP serialized in 0.4260368347168 seconds
json_encode() was roughly 137.92% faster than serialize()


Konuyu irdeleyin :
http://www.google.com.tr/search?sourceid=chrome&ie=UTF-8&q=json_encode+vs+serialize

<?php
ini_set( 'display_errors', 1 );
error_reporting( E_ALL );
$testArray = fillArray( 0, 4 );
//print_r($testArray );    

$start = microtime( true );
json_encode( $testArray );
$jsonTime = microtime( true ) - $start;
echo "JSON encoded in $jsonTime seconds<br>";

$start = microtime( true );
serialize( $testArray );
$serializeTime = microtime( true ) - $start;
echo "PHP serialized in $serializeTime seconds<br>";

if ( $jsonTime < $serializeTime )
    echo "json_encode() was roughly " . number_format( ($serializeTime / $jsonTime - 1 ) * 100, 2 ) . "% faster than serialize()";
else if ( $serializeTime < $jsonTime )
    echo "serialize() was roughly " . number_format( ($jsonTime / $serializeTime - 1 ) * 100, 2 ) . "% faster than json_encode()";
else 
    echo 'Unpossible!';


function fillArray( $depth, $max )
{
    static $seed;
    if ( is_null( $seed ) )
        $seed = array( 1,'a',2,'b',3,'c',4,'d',5,'e',6,'f',7,'g',8,'h',9,'i',0,'j' );
    
    if ( $depth < $max )
    {
        $node = array();
        foreach ( $seed as $key )
         $node[$key] = fillArray( $depth + 1, $max );
       
        return $node;
    }
    return 'empty';
}
?>