За последние 24 часа нас посетил 16251 программист и 1558 роботов. Сейчас ищут 967 программистов ...

Книги по написанию высоконагруженных проектов

Тема в разделе "Прочие вопросы по PHP", создана пользователем kiosuki, 24 июл 2010.

  1. kiosuki

    kiosuki Активный пользователь

    С нами с:
    17 июн 2008
    Сообщения:
    8
    Симпатии:
    0
    Ребята, посоветуйте, пожалуйста, литературу или ресурсы, где подают в нормальном виде информацию о том, как правильно написать крупномасштабный проект с высокой посещаемостью (>10k в день). Надеюсь, в силу массовой распространенности PHP есть смысл писать именно на нем. В частности, интересует механизм формирования кеша, какой HTTP-сервер лучше использовать, как его настроить, какое подобрать железо, и т. п. Спасибо
     
  2. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    kiosuki
    php-fmp + nginx + memcache/redis = profit ну и сетевые настройки оси надо поточить, чтобы она позволяла такое. ну и 10к в день != высоконагруженый проект :)

    такое гавно даже апач выдержит.
     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
  4. kiosuki

    kiosuki Активный пользователь

    С нами с:
    17 июн 2008
    Сообщения:
    8
    Симпатии:
    0
    Спасибо за совет. Ну если вы писали что-то более серьезное, снимаю шляпу. На самом деле таких "самозванцев", которые орут, что для них написать проект с посещаемостью в 100к и более - плевок. А когда начинаешь с ними работать, они не знают даже что такое Singletone или не понимают разницу в производительности между "..." и '...'
    Но я думаю, Вы не из таких )
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    шо такое синглтон - он знает.
     
  6. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    это байтодроч ебланов из пхп4. реальная нагрузка в любом проекте идет ТОЛЬКО от БД, ее и НАДО ОПТИМИЗИРОВАТЬ, а я описал ситуацию когда у вас 80% данных идет из кеша, возможно с небольшими изменениями, типа соц сеть/апи какие либо.

    неплохо связать nginx - memcache если есть статичные полностью кешированные данные, такие как блоки рекордных таблиц, посетитиелей каких либо. для html'ных соц сетей можно использовать nginx + блочное ssi с кешированием на нгинксе :)

    я поклоняюсь сысоеву считаю его героем 2012, а не очередной жумлой хуюмлой и апачем срачем :D

    что такое сингтон? это из музыки?
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Поздняк метаться. Я тебя уже спалил.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    phpdude
    я поклоняюсь сысоеву
    это кто?
     
  9. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    igordata
    ну вот, опять не получится дураком поприкидываться :( а ведь я так хотел :((
     
  10. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    автор nginx - http://sysoev.ru/
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а я-то уж было грешным делом о тебе подумал неладное... Сысоев
     
  12. kiosuki

    kiosuki Активный пользователь

    С нами с:
    17 июн 2008
    Сообщения:
    8
    Симпатии:
    0
    Ну я стараюсь основательно подходить ко всему. Поэтому, даже "..." оптимизирую.
    У меня, например, сейчас ситуация, когда работа с БД занимает 10-20% времени благодаря двум уровням кеша: кеш самих SQL-запросов и кеш возвращаемых результатов. Остальное время - PHP. Я не могу себя назвать профессионалом, но стремлюсь к такому. И основы кеширования на уровне web-сервера мне известы. Но о всяких нюансах мало кто говорит. Например, при блочном кешировании некоторые блоки являются вызовами бекенда - несколько раз во время формирования всей страницы. Как решить вопрос быстродействия, если поднять бекенд с кучей библиотек - куча времени? Повесить PHP-демон на порт, отдающий тот или иной блок? Начинаешь спрашивать на форумах, блогах - мороз.
    P.S. Почему герой 2010? )
    P.S.2 Ребят, поудаляйте мусор, пожалуйста... Я понимаю, что вы хорошие знакомые, но топик засоряется )
     
  13. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    igordata
    не, с попами не сплю, забросил это занятие пару лет назад, а вот с игорем бы подумал наверное ... :))
     
  14. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    я уже сказал nginx + php-fpm, пхпфпм - cgi спаунер, который обрабатывает запросы в режиме очереди, не выгружая пхп код из памяти, ну и его настраиваем, например на один рабочий процесс ставим 5000 запросов, потом смерть воркеру, чтобы он память чистил и мусор который все равно остается. запускается несколько таких "Работников", которые и выполняют пхп задачи, все подключаемые файлы находятся в памяти во время обработки запросов. для пхп то самое быстрое известное мне на данный момент решение, не учитывая hip hop(facebook взгляд на развитие пхп - пхп код, компилируемый в си код, имеет ограничения по функционалу), возможно чтото еще подзабыл) прямо щас настраиваю сервер nginx + fpm :)

    без пхп добился стабильности выполнеия запросов при конкурентности - 20 тыс паралельных соединений и 50 тыс запросов в сеунду, генерируемый трафик - 70 мегабайт в секунду. нагрузка на систему 15-25% :)

    если использовать подобный сервер под фронтенд, думаю легко выдержит 100-300к запросов в секунду, ну обрабатывать запросы будет естетсвенно не сам, только проксировать.

    20% - база, 80% - гадание на манной гуще чтоли? что там такого происходит? в вебе 80% - база, остальное просто форматирование вывода.
     
  15. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    лучше книжки почитайте, в пхп5 разница составляет пару процентов :)

    просто в пхп4 был парсер чуток ебанутый, вот отсюда и "магический" прирост скорости. да и я вам так скажу, если в ыиспользуете опкод кешеры, то на ваши точки ему пофиг, он 1 раз интерпретирует код и миллион раз использует бинарную модель, в которой разницы между точками уже точно нет :)

    как я и говорил - байтодроч и не больше, бросайте это дело ;)
     
  16. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    забыл отметить, что это максимум сколько я смог натравить на сервер имея 1 сервер :)

    но результаты меня радуют, этого достаточно для моей будущей работы с ним
     
  17. kiosuki

    kiosuki Активный пользователь

    С нами с:
    17 июн 2008
    Сообщения:
    8
    Симпатии:
    0
    Ну это не значит, что код надо писать грязным и не обращать внимания на элементарные вещи? )
    Я до кешеров еще не доходил, но щас самое время. Посоветуйте, как профи, какой юзать? eAccelerator - все о нем тараторят. Спасибо.
     
  18. kiosuki

    kiosuki Активный пользователь

    С нами с:
    17 июн 2008
    Сообщения:
    8
    Симпатии:
    0
    В общем, благодаря подобной связке, что Вы отметили? А проект сам PHP+*SQL? И что за железо?
     
  19. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    php api => json rest => action script | flex api.

    соц сеть в виде внедряемого в сторонние приложения компонента :)

    во как заебну, чтобы заинтриговать как на хабре понты гнут из простых вещей Ж)

    из опыта испольования этот кешер неплох для небольших файлов, мало связанных, для всяких zf|bitrix рекомендуется xcache, я для себя выбрал eaccelerator, с монстрами я не работаю, поэтому xcache неактуален для меня.

    а кто говорил про грязность? код надо писать чистым, читаемым, самодокументируемым. кавычки или двойные кавычки очень посредственно относятся к этим понятиям, а вот с понятием байтодрочь неплохо коррелируют :)

    PHP:
    1.  
    2. echo "my name is $name";
    3.  
    PHP:
    1.  
    2. echo 'my name is ".$name;
    3.  
    ага, чем то лучше

    PHP:
    1.  
    2. echo "my name is $name\nand surname is $surname";
    3.  
    PHP:
    1.  
    2. echo "my name is" . $name . "\n".'and surname is ".$surname;
    3.  
    а вот это уже пиздецом попахивает, даже пованивает я бы сказал :)

    ну и к слову, не думаю что расходы на конкатенацию значительно ниже расходов на парсинг переменных в строке, ведь при конкатенации выделяется память и переменные копируются и создаются новые, это очень сомнительная оптимизация.

    самый красивый метод конечно echo sprintf("my name is %s'nand surname is %s", $name, $surname);
     
  20. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    железо недорогое, 12гб оперативки и 8 ядерная система. но я думаю что вы сами можете понять что не всякий танк летает, а только с хорошим водителем :)
     
  21. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    дуд, как эскейпинг в JSON организовывал?
     
  22. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    поясню:
    [js][
    {
    id : 1, // в этом поле нужно все гавно в html-сущности перевести
    title : 'foo', // тут аналогично
    body : 'bar' // здесь safe-текст, т.е. ниче конвертить не нужно, оставляем как есть
    ][/js]
     
  23. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Koc
    функцией json_encode. ты про такую не знал? :)
     
  24. phpdude

    phpdude Активный пользователь

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Koc
    ты - бот :D
     
  25. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    капец, я не про это