750 000 Mysql queries per second is real

Азиатов не остановить :) Пост в блоге японского разработчика, рассказывающий о том как получить 750 000 mysql запросов в секунду. Теперь NoSQL кажется не таким перспективным :) 
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html

Published on Fri, 22 Oct 2010 18:39

Колхозники и apache make_sock :)

Starting httpd: (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down
Unable to open logs!

при возникновении такой ошибки на боевом сервере, обычно после apachectl stop, меня охватывала паника, и все на что хватало воспаленного мозга - reboot в консоли. Учитывая что процессов апача запущено не было, а на 80м порту висела пара FIN_WAIT’ов, выбора казалось бы нет ))) И так было не раз.

Стоило чуть задуматься немного погуглить, и нашелся простейший ответ:

netstat -lnp | grep ':80'
в моем случае подсказало мне, что 80й порт каким-то чудом умудряется занять memcached, за что он моментально наказывается
killall -9 memcached
:))

Вот такие дела. Воистину, reboot - крайняя мера в линухах ))

Published on Mon, 09 Feb 2009 10:37

memcached

Сегодня впервые опробовал memcached ("мемкешди" в русской транскрипции). Эффект офигенный.

Я разрабатывал онлайн просмотрщик биржевых торгов, который просто обновлял HTML страницу с выбранными инструментами с определенной периодичностью. Основная засада была в том что минимальный период - 3 секунды, а таких пользователей сейчас может быть до сотни. Таким образом получаем 300 запросов в три секунды, т.е. где-то 100 запросов к базе в секунду. А запрос довольно немаленький на самом деле.

Решилось все очень просто - кешированием запросов которые выполняются с периодичностью в 15 секунд и более. Изменения в коде - минимальные. Пришлось запросы к базе делать через маленький метод такого рода:

function getCachedQuery($query, $ttl=30) { 
    global $_memcache, $db; //$db здесь - объект PEAR::MDB2 
    if(!isset($_memcache)) { 
        $_memcache = new Memcache; 
        $_memcache->connect('localhost', 11211) or die ('Could not connect'); 
    }
    $md5_q_txt = md5($query); 
    if($_memcache->get($md5_q_txt)) { 
        $q = $_memcache->get($md5_q_txt); 
    } else { 
        $q = $db->queryAll($query, '', MDB2_FETCHMODE_ASSOC);
        $_memcache->add($md5_q_txt, $q, false, $ttl);
    } 
    return $q;
} 

Вот такой вот несложный код заставит ваше интернет приложение задышать поновому :))

Published on Mon, 03 Sep 2007 07:24