Daos держит нагрузки

29.10.2009

Выпускаю очередное обновление. Спасибо покупателям, которые провели испытания в боевых условиях: оказалось, что при 100 тыс. запросов в сутки с Daos происходили некоторые неприятные вещи… если быть точным, то просто сбрасывались все объявления. Извините, не ожидал такого поведения.

Дело в том, что запись данных происходила через file_put_contents без блокировки файла. Теперь, в новой версии файл данных блокируется до завершения записи. Надеюсь, должно замечательно работать при любых нагрузках.

P.S. Спасибо Edogs (Очень оперативно помог) и Aktuba (Тоже, кстати, имеет ресурсы для экстремального тестирования)за ликбез.

Комментарии

  1. # Аватар: 

    Увы и ах не держит опять. Через ~ 1,5 часа снова база обнулилась чудестным образом

  2. # aktuba

    Перерыл инет – везде советуют делать через временный файл.

    P.S.: вынеси работу с файлом в одно место, чтобы не править несколько кусков кода.

  3. # aktuba

    http://spectator.ru/technology/php/flock_workaround

  4. # Jungle

    а sqlite чем не решение? для таких целей как раз

  5. # aktuba

    2Jungle: наверное тем, что не все хостинги поддерживают + нет необходимости в базе из-за одной записи ;)

  6. # Тормоз

    Аватар, ну вот, блин, радостное пробуждение :(
    Хвалёный flock всё же подвёл.

    Aktuba, спасибо за ссылку на спектатора. Сейчас позавтракаю и переделаю под переименование. Правда, всё равно что-то беспокоит меня в этом решении.

    Jungle, нужна максимальная независимость от платформ. Если уж использовать базу, то MySQL. Просто я считаю её слишком жирной для такого проекта. Хранить-то надо совсем немного.

  7. # Never Lex

    Видимо без мускуля не обойтись. Всё таки нагрузки – уязвимое место текстовой БД.

  8. # aktuba

    Проверь почту – там я тебе прислал ссылку на разъяснение по flock…

  9. # yaman

    > Правда, всё равно что-то беспокоит меня в этом решении
    ну да, если чтение будет произведено в тот момент, когда файл будет отсутствовать во время unlink или rename – это будет не айс
    надо чтение ф цыкл поставить тогда штоли :)

    второй момент – если файл будет залочен при чтении, и функцея записи попытается сделать те же unlink/rename – она обломаецо
    опять цыкл напрашиваетца

  10. # Тормоз

    Проблема ещё и в том, что настройки читаются как include(‘rewriteFile’), значит, есть вероятность чтения недозаписнного файла, на include блокировки не действуют. Возможно, придётся и чтение полностью переписывать и формат базы :(

  11. # aktuba

    2yaman: плохие идеи. очень плохие.

  12. # Jungle

    ну так, sqlite у многих по дефолту стоит и потом чем изобретать велосипед, лучше воспользоваться готовым решением, ИМХО

    или на крайняк использовать Berkeley DB или его аналоги http://ru2.php.net/manual/en/dba.requirements.php

    http://www.php.net/manual/en/function.dba-open.php

    не уж то блокировка файла в php не справляется?

  13. # Тормоз

    Jungle, просто блокировать файл при чтении тоже надо, см. выше. Я вчера сделал какое-то половинчатое решение, потому оно и не работает как надо.

  14. # Alek$

    Тормоз, в зависимости от mysql нет ничего критичного по одной простой причине: Daos имеет смысл ставиьт только на сайты с нормальной посещаемостью, которые в подавляющем большинстве случаев уже используют mysql. И даже если не используют, то хостер ее обязательно предоставляет.

  15. # Тормоз

    Alek$, сделаю признание: я до сих пор ни разу не работал с MySQL из скриптов :) Это пока останавливает.

    И вторая причина — немного сложнее для пользователя будет установка, ведь тогда надо указывать сервер базы, имя базы данных, логин/пароль. Муторно.

    Да и согласись, что смысла особого нет? Данных очень мало, не для MySQL эта задача.

  16. # didgugan

    Привет. Хочу взять у тебя интервью о твоем блоге. Напишу о нем пост. бесплатно.

  17. # Аватар: 

    Я за мускул. Проверено временем и посетителями. Еще с 2006 годов понял, что счетики посещаемости на текстовых базах имеют свойства обнулятся. Такое часто было на wap сайтах, где юзался такой счетчик.

  18. # aktuba

    Парни, Вы чего??? Зачем использовать базу ради десятка записей? Тем более bdb или sqlite, которые не везде стоят?

    2Тормоз: mysql – это легко ;)

  19. # Тормоз: 

    Didgugan, бесплатно?! Ничего себе, очень заманчивое предложение! Раньше-то мне приходилось кругленькие суммы отстёгивать за каждое интервью. Есть счастье на земле, спасибо!

    Аватар, проверено, но всё же не к месту база в Daos, я так думаю. Aktuba согласен :)

  20. # Alek$

    Тормоз, в тех рамках, что нужно для Daos, mysql элементарен как пять копеек.

    А насчет избыточности – как посмотреть. По мне, так лучше пусть использует базу, но не глючит. К тому же это даст возможность к росту.

    Альтернативный вариант – вынести работу с хранилищем в отдельное API и реализовать два варианта – для mysql и файлов. А каждый будет выбирать для себя, что ему нужнее.

  21. # Тормоз: 

    Alek$, а ты быстро работаешь? Не хочешь заняться разработкой Daos 2.0 с премодерацией, настройкой оформления, языковыми файлами, разными биллингами, блэкджеком и шлюхами всякими охренительными задумками? Если тебе это интересно, пожалуйста, отпиши мылом, каковы твои условия.

    Время — деньги. Ничерта не успеваю.

  22. # Аватар: 

    При повторой проверки DAOS сглюкнул на втором сайта с 50 тыс. просмотрами в сутки.

    Ждем мускул версию…

  23. # GogA

    Тормоз, добавь плиз строчку.

    <noscript>Для корректной работы требуется поддержка технологии JavaScript</noscript>.

  24. # Тормоз

    Аватар, я же написал выше, что дело не в файлах, а в том, как я с ними работал. Работал неправильно. Сейчас переделываю, но пока всё поломал нафиг у себя в локалке :) Скоро исправлю. Дело в том, что для записи я блокировал файл, а для чтения нет, поэтому и сбросилось всё снова.

    GogA, куда добавить-то? Там есть <noscript>.

  25. # vitvirtual

    Тоже хочу спросить, появится ли Daos на английском языке, и когда?

  26. # Тормоз

    Появится. Когда не знаю, у меня всегда всё дольше, чем хотелось бы.

  27. # Never Lex

    Ага, с буржуев реально денег скосить. Если ещё заручиться поддержкой ихнего авторитета… или продавать через такого…

  28. # Тормоз

    Мне не нужна поддержка авторитетов. Вернее, я знаю, как легко и быстро приобрести её — уверен, что с раскруткой у меня не будет ни малейших проблем.

  29. # Jungle

    Всё таки решил под БД переписать?

  30. # Тормоз

    Да, без MySQL никак. Выяснилось, что даже flock не спасает на действительно серьезных нагрузках.

Комментирование этой статьи закрыто.

Интересное Покупки ТехникаРазное Отдых Статьи Строительство Услуги Общество Хобби Культура Советы Уют