|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.04.2015, 00:21 | #91 | |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Цитата:
нужно по нормальному делать, нет если не хочешь можешь оставить как есть, право твое
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
|
04.04.2015, 00:29 | #92 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Stanislav.Большое спасибо, попробую все сделать, но не знаю когда. Завтра выйти на работу нужно(уже сегодня). Потом по настроению буду думать.
|
04.04.2015, 00:32 | #93 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Конечно, пишите если что
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
05.04.2015, 14:08 | #94 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Вчера до 8 вечера на работе был и сильно уморился. Пока что отложу запуск cron по нормальному. Оставлю пока как есть, для тестирования сойдет.
Немного модифицировал план нагрузки для большего приближения к реальности. Сейчас расскажу как я пытаюсь оптимизировать нагрузку логикой работы скриптов. Если принять время одного хода 20 секунд. У меня имеется задержка 3 сек в программе delphi на отправку данных на сервер о вариантах выбора карт для хода. Я ее назвал "технологической" и она связана с точностью распознования карт ( возможно в дальнейшем уменьшение до 2х секунд но не факт) Без нее никуда. Для оптимизации- более плавного распределения нагрузки во время ходя ( так как большинство людей загрузят скрипт в первые секунды хода) я ввожу еще дополнительную случайную задержку 0-5 секунд на перезагрузку скрипта golos.php (перенаправление через (http://funprograms.ru/k257b1) он отображает варианты карт и на нем люди голосуют и переходят на скрипт server.php, который узнает голосовал ли человек на этом ходу по cookies, если проголосовал заносит данные в базу и выдает сообщение человеку и запускает скрипт golos.php для нового хода через такой же таймер с задержкой как в скрипте golos.php. Так вот что получается: 1) на первом ходу, так как еще никто не запустил golos.php(там таймер на перезагрузку страницы ,если пользователь не проголосуют на текущем ходу чтобы отобразить карты нового хода)) нагрузка будет максимальная и неконтролируемая, с которой я ничего не смогу поделать( наверное просто будет ограничение на кол соединений и большинство людей просто отказано в доступе будет). Здесь я не могу применить свой способ оптимизации. 2) на втором и последующих ходах будет работать таймер на перезагрузку страницы в golos.php или , если человек нажмет голосовать, то такой же таймер в server.php. Вот что получается: С сервера запрашивается время начало хода. Из текущего времени отнимается это время начало хода и узнаем сколько времени реально осталось до конца хода. Из-за задержек от таймера предыдущего хода на текущем ходу остается 20-3-0(5)=12(17) секунд. здесь 3 это "технолигическая" задержка, 0(5) задержка "оптимазации". На этом же ходу(второй и последующих ходах) добавляется такая же задержка, получаем: 12(17)-3-0(5)=4(14) секунд Еще нужно отнять какое то время на задержку загрузки скрипта в среднем, наверное 2 секунды. Имеем 2(12) секунд реального времени остается людям для того чтобы увидеть карты и произвести голосование. Запуск таймера на первом ходу:20-3-2.5=14.5 сек на втором и последующих ходах: 14.5-3-2.5-2(это время задержки загрузки скрипта)=7 секунд (Среднее времена отводимое на голосование ) таким образом за эти 7 секунд и будет вся основная нагрузка. Если имеем 500 человек то это 72 загрузки скриптов golos.php, размером около 50-60кбайт( в основном рисунки) и 72 загрузки скрипта server.php размером около 3-10 кбайт. 72/cек по каждому скрипту это среднее , а не максимальное. по скорости это 72*(53)*8=30.5 мбит/c или 72*(70)*8=40.3 мбит/c Возможно, где то в расчетах есть ошибка ( может быть для сервера -2 секунды не нужно отнимать на загрузку скрипта, так как он уже начнет выполнятся). Я плохо умею высказывать свои мысли. Возможно ничего не понятно. Может быть есть альтернативные варианты более плавного распределения нагрузки для моего случая? Все это сделано потому, что большинство людей проголосуют в первые секунды а не равномерно на все время хода. Я был бы очень рад чтобы получилось выдержать 1000 человек после всех оптимизаций. Stanislav, я тебе отправлю тест, но нужно согласовать время теста в пределах 85 минут ( чтобы я запустил cron,а ты запустил тест или сразу, или не позже 70 минут после того как я запущу cron) Я не знаю, попаду ли я на обед домой в понедельник. Если попаду, то это будет около 12.30 по МКВ. В это время я смогу запустить cron. Если я буду на обеде, сможешь ли ты где то в период с 12-40 до 13.40(желательно ближе к началу) запустить тест? (ожидаемое время теста 10 минут , но точно не знаю) Я на форуме отпишу, когда запущу cron, если не отпишу то откладывается тест. Блин, забылся что cron чаще 1 раза в минуту не может, а мне нужно в 20 сек. Если скрипт сделать чтобы он 3 раза делал действие с задержками, то время выполнения скрипта будет около 60 сек. Мне нужно в настройках php.ini прописать около 60+ секунд на время выполнения скрипта и перезагрузить php? Здесь менять php.ini ? Код:
Код:
И как перезагрузить php? Или вообще в скрипте можно вызвать set_time_limit(сек) и не менять php.ini? Последний раз редактировалось Illusiony; 05.04.2015 в 15:30. |
05.04.2015, 19:39 | #95 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Привет многое не понял конечно же.
Первое я не пойму зачем такие сложные расчеты и думы? Тебе нужно понять сколько запросов твоя машина выдержит, ну так давай сделаем "DoS-атаку" посредством jmeter предположим видим что выдерживает 5000 запросов в сек. больше тебе и ничего ну нужно. Еще не пойму зачем ты связываешься с кукисами, есть базы данных, можно было redis заюзать. Да смогу запустить тест в любое время. Да можно поставить set_time_limit(0)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
05.04.2015, 20:37 | #96 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Мне нужно не только понять сколько выдержит именно нужных мне запросов, но и узнать сколько у меня может реально быть запросов(0 то есть сопоставить 2 цифры реально-идеально). Иначе по цифрам сколько выдержит не будут особо значимыми.
кукисами я проверяю проголосовал человек в этом ходу или нет. Зачем мне базы данных для этого тратить еще ресурсы сервера? Я же до этого делал на ip адресах и заносил в Mysql. Отказался от этого давно. |
05.04.2015, 20:49 | #97 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
А если кукисы запрещены? более того кукисы лежат на клиентской стороне, а значит я могу их подделать, и голосовать сколько мне влезет.
Вообще если бы ты нарисовал нормальную схему того что ты имеешь возможно мы могли подумать как тебе вообще логичнее и правильно стоит поступить. на мой взгляд у тебя много не оптимизированных - передуманных вещей, все можно было сделать гораздо проще и правильнее, в конце концов можно было придумать некий балансир т.е запросы с дельфи идут на него а он же смотрит куда чего. но говорю это как то не правильно все.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
05.04.2015, 21:35 | #98 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Я смирился с тем, что кукисы могут подделать. Если кукисы выключены, то будет сообщение. Иначе, без кукисов, будет дополнительная нагрузка на сервер.
Сейчас пытаюсь изменить скрипт имитации работы delphi чтобы 3 раза делал одно и тоже 20*3=60 секунд. Но чтото неполучается. Выполняется цикл только 1 раз вместо 3х. Для проверки сделал такое: Код:
как то странно. Весь скрипт показывать громоздко. Взял без цикла 2 раза повторил код, сделал mysqli_close($link); в конце первого и заново коннект в начале второго куска. Результат тот же. Если с этим не разберусь сейчас, то нагрузочного теста не будет пока что. Нашел ошибку и исправил. Ошибка заключалась в том, что я для нового цикла закрывал соединение а заново не инициировал, в результате была фатальная ошибка, но ее в ответе скрипта не было. Сделал на Denwer и увидел ошибку. Скоро отправлю план теста. Последний раз редактировалось Illusiony; 05.04.2015 в 21:57. |
05.04.2015, 22:03 | #99 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Я бы очень рад помочь тебе но я правда не понимаю многих вещей в частности зачем ты делаешь какие-либо задержки в скрипте зачем? вместо того чтобы скрипт отработал и освободил ресурсы машины ты его искусственно заставляешь работать больше, если таким образом ты пытаешься защитить бд или еще что, скажу сразу игра на спичках, тут отбираешь там добавляешь.
да и вообще в целом твой алгоритм запутанный и не понятный, предлагаю рефакторить его как можно скорее Код:
Такую вещь скажу, твой сервер разгребет твой код даже в таком виде, современные cms делают по 100 запрос на открытие одной страницы, умножь на кол-во пользователей. Я пытаюсь сделать так чтобы ты понял суть. забей на кукисы используй БД сделай поле IP индексом - этого будет достаточно OK - шли свой план
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Последний раз редактировалось Stanislav; 05.04.2015 в 22:11. |
05.04.2015, 22:20 | #100 |
Форумчанин
Регистрация: 17.02.2014
Сообщений: 881
|
Отправил тест.
Если скорость работы сервера под тестовыми нагрузками меня устроит более чем то, возможно переделаю для ip адресов. Но я сомневаюсь, что сервер выдержит 1000 пользователей при минимальной конфигрурации vds, даже учитывая очень простые запросы и сравнительно небольшую скорость инета для теста. Задержку в скрипте имитации delphi программы делаю потому что мне нужно чтобы данные посылались каждые 20 секунд, а не каждую минуту по cron. Задержка в скриптах самого проекта golos.php и server.php потому, что если большинство людей сразу проголосуют за первые 1-3 секунды то нагрузка будет в несколько раз больше чем , если бы они равномерно голосовали в течении, например 0-17 секунд. тоесть при простых подсчетов нагрузка может быть больше 17/3=5-6 раз. Конечно, я бы не морочил себе горлову, если бы люди голосовали равномерно по времени но увы такого не будет и большинство запросов придут за эти 1-3 секунды, а остальные приблизительно 14 секунд сервер будет пытаться разгребсти эти запросы или откажется это делать. Мои первые тесты на своей машине показали что при 50 запросах в секунду с минимальным трафиком( убрал рисунки) это соответствует примерно 200 людям. В пике нагружал проц до 15% при моей предельной скорости около 4 мбит/с.Но это без картинок. Последний раз редактировалось Illusiony; 05.04.2015 в 22:28. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
расчет факториала. Дайте пож листинг программы | ринат Д | Общие вопросы C/C++ | 1 | 14.12.2013 13:41 |
Что ни так с моим браузером? | qwizz | Общие вопросы Delphi | 7 | 25.03.2013 10:28 |
что с моим компом? | Leonidi | Помощь студентам | 12 | 16.05.2012 08:08 |
Поясните задачу... Дайте советы по её реализации | SWAT92Shtorm | Помощь студентам | 10 | 19.06.2009 19:27 |
Дайте советы начинающему! | RomT24 | Общие вопросы C/C++ | 7 | 24.05.2009 13:43 |