Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Операционные системы > Администрирование dedicated серверов, VPS/VDS, shared хостингов, IaaS, PaaS.
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2015, 00:21   #91
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Illusiony Посмотреть сообщение
Хм, а то что скрипт лежит в /home/admin/web/default.domain/public_html это проблема?
default.domain, funprograms.ru это директории доменов, проект у тебя живет funprograms.ru зачем плодить скрипты в других каталогах / доменах которые потом вообще по сути нужно заглушить а?

нужно по нормальному делать, нет если не хочешь можешь оставить как есть, право твое
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 04.04.2015, 00:29   #92
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Stanislav.Большое спасибо, попробую все сделать, но не знаю когда. Завтра выйти на работу нужно(уже сегодня). Потом по настроению буду думать.
Illusiony вне форума Ответить с цитированием
Старый 04.04.2015, 00:32   #93
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от Illusiony Посмотреть сообщение
Stanislav.Большое спасибо, попробую все сделать, но не знаю когда. Завтра выйти на работу нужно(уже сегодня). Потом по настроению буду думать.
Конечно, пишите если что
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 05.04.2015, 14:08   #94
Illusiony
Форумчанин
 
Регистрация: 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 ?
Код:
/etc/php5/apache2
параметр:
Код:
max_execution_time = 30
Исправить на нужное мне?

И как перезагрузить php?

Или вообще в скрипте можно вызвать set_time_limit(сек) и не менять php.ini?

Последний раз редактировалось Illusiony; 05.04.2015 в 15:30.
Illusiony вне форума Ответить с цитированием
Старый 05.04.2015, 19:39   #95
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Привет многое не понял конечно же.
Первое я не пойму зачем такие сложные расчеты и думы? Тебе нужно понять сколько запросов твоя машина выдержит, ну так давай сделаем "DoS-атаку" посредством jmeter предположим видим что выдерживает 5000 запросов в сек. больше тебе и ничего ну нужно.
Еще не пойму зачем ты связываешься с кукисами, есть базы данных, можно было redis заюзать.


Да смогу запустить тест в любое время.

Да можно поставить set_time_limit(0)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 05.04.2015, 20:37   #96
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Мне нужно не только понять сколько выдержит именно нужных мне запросов, но и узнать сколько у меня может реально быть запросов(0 то есть сопоставить 2 цифры реально-идеально). Иначе по цифрам сколько выдержит не будут особо значимыми.
кукисами я проверяю проголосовал человек в этом ходу или нет. Зачем мне базы данных для этого тратить еще ресурсы сервера? Я же до этого делал на ip адресах и заносил в Mysql. Отказался от этого давно.
Illusiony вне форума Ответить с цитированием
Старый 05.04.2015, 20:49   #97
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

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

Вообще если бы ты нарисовал нормальную схему того что ты имеешь возможно мы могли подумать как тебе вообще логичнее и правильно стоит поступить. на мой взгляд у тебя много не оптимизированных - передуманных вещей, все можно было сделать гораздо проще и правильнее, в конце концов можно было придумать некий балансир т.е запросы с дельфи идут на него а он же смотрит куда чего. но говорю это как то не правильно все.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 05.04.2015, 21:35   #98
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Я смирился с тем, что кукисы могут подделать. Если кукисы выключены, то будет сообщение. Иначе, без кукисов, будет дополнительная нагрузка на сервер.
Сейчас пытаюсь изменить скрипт имитации работы delphi чтобы 3 раза делал одно и тоже 20*3=60 секунд.

Но чтото неполучается. Выполняется цикл только 1 раз вместо 3х. Для проверки сделал такое:
Код:
<?php

for($j = 0; $j < 3; $j++)
{
sleep(3);
	
sleep(17);
set_time_limit(0);	
echo "1+<br>";
}
//

?>
Все как надо выполняется 3 раза. Но когда тоже самое пытаюсь применить к своему скрипту в котором коннекты к бд, то цикл выполняется 1 раз. убрал exit(); не помогло.
как то странно. Весь скрипт показывать громоздко.

Взял без цикла 2 раза повторил код, сделал mysqli_close($link); в конце первого и заново коннект в начале второго куска. Результат тот же.
Если с этим не разберусь сейчас, то нагрузочного теста не будет пока что.

Нашел ошибку и исправил.
Ошибка заключалась в том, что я для нового цикла закрывал соединение а заново не инициировал, в результате была фатальная ошибка, но ее в ответе скрипта не было. Сделал на Denwer и увидел ошибку.
Скоро отправлю план теста.

Последний раз редактировалось Illusiony; 05.04.2015 в 21:57.
Illusiony вне форума Ответить с цитированием
Старый 05.04.2015, 22:03   #99
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Я бы очень рад помочь тебе но я правда не понимаю многих вещей в частности зачем ты делаешь какие-либо задержки в скрипте зачем? вместо того чтобы скрипт отработал и освободил ресурсы машины ты его искусственно заставляешь работать больше, если таким образом ты пытаешься защитить бд или еще что, скажу сразу игра на спичках, тут отбираешь там добавляешь.

да и вообще в целом твой алгоритм запутанный и не понятный, предлагаю рефакторить его как можно скорее

Код:
set_time_limit(0);
лучше ставить в начале скрипта.


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

Я пытаюсь сделать так чтобы ты понял суть.

забей на кукисы используй БД сделай поле IP индексом - этого будет достаточно

OK - шли свой план
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 05.04.2015 в 22:11.
Stanislav вне форума Ответить с цитированием
Старый 05.04.2015, 22:20   #100
Illusiony
Форумчанин
 
Регистрация: 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.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
расчет факториала. Дайте пож листинг программы ринат Д Общие вопросы 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