Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
jonikster
8 / 8 / 1
Регистрация: 26.10.2014
Сообщений: 829
#1

Создание нагруженного проекта - PHP

02.06.2018, 22:44. Просмотров 188. Ответов 13
Метки нет (Все метки)

Здравствуйте.
Есть сервер с такими параметрами:
Операционная система:
Debian 7.11 x86
Память RAM:
1024 Мб
Память SSD:
30000 Мб
CPU:
2x2.8 Ghz
Хочу разработать проект социальной сети.
Возможность поиска по определенным параметрам, отправки сообщений, добавление фотографий, публикации записей на стену. Пока это максимум.
Интересует, какой нагруз сервер сможет выдержать, как оптимизировать под это сайт, и при каком нагрузе придется распределять сайт на несколько серверов, и самое главное, как это делать. Это надо учитывать сразу при написании, или переделать проект будет несложно?
Заранее благодарен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.06.2018, 22:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создание нагруженного проекта (PHP):

Реализация крупного проекта. Структурирование проекта
Взялся писать крупный проект, нечто вроде социальной сети для компании,...

Обход нагруженного дерева (бора)
Здравствуйте,прошу помощи в объяснении как сделать обход такого дерева. В...

Построение матрицы инцидентности для нагруженного ориентировочного графа
Подскажите пожалуйста как строится матрица инцидентности для нагруженного...

Создание проекта C++
Установил ru_visual_studio_ultimate_2012_x86_dvd_920957.iso , в списке проектов...

Создание проекта
Здраствуйте, Месяца 3 назад начал делать программу, для просмотра информации о...

Создание проекта VB
Добрый день! Уважаемые форумчане! Подскажите, пожалуйста...Попросили помочь с...

13
tarasalk
1089 / 643 / 261
Регистрация: 13.06.2013
Сообщений: 2,256
03.06.2018, 09:11 #2
Цитата Сообщение от jonikster Посмотреть сообщение
Возможность поиска по определенным параметрам, отправки сообщений, добавление фотографий, публикации записей на стену. Пока это максимум.
На самом деле все это делается довольно быстро. Ничего сложного с точки зрения кода. Затраты на раскрутку в раз выше.
Одного сервера достаточно чтобы понять работает ваша идея или нет.
C первого раза в любом случае не получится написать как положено и придется переделывать. Причем много много раз.
Ну, если у вас очень много лишних денег и времени, можете сразу купить дата-центр и писать highload Чтобы прям было десятки отдельных серверов для БД, картинок, фронта, бекенда, кэша итд..
0
jonikster
8 / 8 / 1
Регистрация: 26.10.2014
Сообщений: 829
03.06.2018, 11:13  [ТС] #3
tarasalk, в том то и дело, что таких возможностей пока нет. Хочу узнать, на сколько потянет 1 этот маленький сервер, и как можно разбить приложение на 2 сервера
0
tarasalk
1089 / 643 / 261
Регистрация: 13.06.2013
Сообщений: 2,256
03.06.2018, 12:59 #4
Точных чисел тут нет, все зависит от реализации. Может и 1 юзер весь сервак положить.
По памяти на диске еще можно как то предсказать. Допустим 1 картинка = 0,3Мб. 100 картинок на юзера. 30000 / 100 / 0,3 = 1000 юзеров. И это только картинки.

По масштабированию много статей есть, гуглите.
0
sasha0012
337 / 143 / 105
Регистрация: 21.06.2012
Сообщений: 660
03.06.2018, 14:23 #5
Цитата Сообщение от tarasalk Посмотреть сообщение
Точных чисел тут нет, все зависит от реализации. Может и 1 юзер весь сервак положить.
Ну если реализацией мы сами занимаемся, значит спрогнозировать можно.

К примеру так можно попробовать:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$start = memory_get_peak_usage();
echo "Пик нагрузки: $start байт <br>";
 
for ($i = 0; $i < 100000; $i++) {
    $array []= md5($i);
}
 
for ($i = 0; $i < 100000; $i++) {
    unset($array[$i]);
}
 
$finish = memory_get_peak_usage();
echo "Пик нагрузки: $finish байт <br>";
 
$rezult = $finish - $start;
echo "Всего исползованно: $rezult байт, ".($rezult/1048576)." мегабайт <br>";
Получим около 12 мегабайт на перебор этого цикла.

Таким образом можно протестить все свои скрипты и посмотреть сколько одновременных обращений может выдержать сервер. И конечно sql запросы тоже нужно проверить (выборка, запись, и т.п.) правда не знаю какими функциями это проверять (по моему в библиотеки msqli нет таких функций, тогда отслеживать на своём компе процессы и считать).
0
tarasalk
1089 / 643 / 261
Регистрация: 13.06.2013
Сообщений: 2,256
03.06.2018, 14:49 #6
sasha0012, какой-то синтетический тест. А что будет в реальном проекте? Вот получил я 12 мегабайт. Что с этим делать? Как эту инфу использовать для прогнозирования затрат памяти когда в проекте может быть 100500 различных функций, кроны, очереди, растущие объемы данных итд...

На мой взгляд адекватные люди подобным не занимаются. Обычно берут средний сервак и запускаются, дальше берут профайлер и смотрят узкие места.
0
sasha0012
337 / 143 / 105
Регистрация: 21.06.2012
Сообщений: 660
03.06.2018, 16:12 #7
tarasalk, давайте смоделируем ситуацию:
Вы разработчик сайтов и системный администратор, к вам пришёл заказчик и заказал сайт. Вы выполнили работу (естественно движок на php), и пришло время выкладывать на сервер. Заказчик предоставляет сервер с характеристиками сервера ТС, и спрашивает: "Сколько одновременных запросов сможет обработать сервер?"

Что Вы ему ответите, с учётом того что Вы знаете какие там функции, кроны, объёмы памяти и т.д.?
0
Jewbacabra
Эксперт PHP
3096 / 2683 / 1228
Регистрация: 24.04.2014
Сообщений: 8,211
03.06.2018, 16:39 #8
Цитата Сообщение от sasha0012 Посмотреть сообщение
Что Вы ему ответите, с учётом того что Вы знаете какие там функции, кроны, объёмы памяти и т.д.?
Я бы ответил что хз. Если так уж хочется знать точно, то нагрузочное тестирование и за отдельную плату.
1
sasha0012
337 / 143 / 105
Регистрация: 21.06.2012
Сообщений: 660
03.06.2018, 17:07 #9
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Если так уж хочется знать точно
Так в том то и дело, что точность здесь не нужна. Нужно дать "грубый" ответ, в пределах +/- 10/20%

Вот к примеру, если обработка моей страницы выдаёт пиковую нагрузку в 12 мб., то ведь можно утверждать (хоть и грубо, но в пределах 10% погрешности), что сервер выдержит 80 единовременных запросов?
0
Jewbacabra
Эксперт PHP
3096 / 2683 / 1228
Регистрация: 24.04.2014
Сообщений: 8,211
03.06.2018, 17:21 #10
Цитата Сообщение от sasha0012 Посмотреть сообщение
Нужно дать "грубый" ответ, в пределах +/- 10/20%
Это довольно точно.
Цитата Сообщение от sasha0012 Посмотреть сообщение
Вот к примеру, если обработка моей страницы выдаёт пиковую нагрузку в 12 мб., то ведь можно утверждать (хоть и грубо, но в пределах 10% погрешности), что сервер выдержит 80 единовременных запросов?
Память не единственная характеристика. И почему 80? И что означает "единовременных" запросов? Обычно считают число запросов в минуту.

Обычно настраивается мониторинг, измеряющий необходимые параметры серверов. По ним можно попробовать предсказать сколько примерно запросов можно выдержать исходя из текущей нагрузки.
0
tarasalk
1089 / 643 / 261
Регистрация: 13.06.2013
Сообщений: 2,256
03.06.2018, 17:41 #11
Цитата Сообщение от sasha0012 Посмотреть сообщение
Сколько одновременных запросов сможет обработать сервер?
Если задача стоит именно так, то да, проведу подобный вашему тест для подсчета запросов и выдам какое-нибудь число.
Но его наверняка заинтересуют не абстрактные числа, а конкретно сколько пользователей он потянет. Тут все сложнее.

Например у меня в проекте пользователей мало - около тысячи. В данном случае пользователи - руководители компаний. Им нужно подсчитать KPI своих сотрудников,и мы для них загружаем данные из CRM и выдаем в удобном виде.
Все компании разные по размеру. Иногда придет стартап, загрузит систему условно на 1% и уйдет. А иногда приходит какой-нибудь админ газпрома и зальет нам терабайты данных. И сервак сразу умирает.
И что я должен ответить? "Ну мы тестили сервак, было 500 юзеров и было максимум 500 запросов из 1000 возможных, а теперь 501 юзер и 100500 запросов."

У ТС та же фигня. Каждый пользователь создает разную нагрузку и заранее ее предсказать очень сложно. Нужна статистика, в реальных боевых условиях. Чем больше юзеров, тем точнее статистика.
0
sasha0012
337 / 143 / 105
Регистрация: 21.06.2012
Сообщений: 660
03.06.2018, 19:01 #12
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Обычно настраивается мониторинг, измеряющий необходимые параметры серверов. По ним можно попробовать предсказать сколько примерно запросов можно выдержать исходя из текущей нагрузки.
Это всё понятно. Но эти манипуляции нужно проводить непосредственно на сервере, то есть нужно сначала купить хостинг а потом проверять. Но вопрос в том, возможно ли обратное? Сначала проверить а потом купить хостинг.

Во к примеру, я знаю что моя страница потребляет 12 мб. (скорость обработки пускай будет 1 сек.), я хочу чтобы мой сервер обрабатывал 100 запросов в секунду. Имея эти данные, я могу подобрать себе оптимальный сервер или нет?

Добавлено через 1 час 2 минуты
Jewbacabra, tarasalk, а возможно ли выразить пропускную способность сервера формулой?

Мне в голову пришёл такой вариант: x = y-25%/m/t где x - количество запросов в секунду, y - оперативная память, m - пиковое потребление памяти скриптами, t - время выполнения скрипта (которое зависит от частоты процессора (Ghz)).
0
Jewbacabra
Эксперт PHP
3096 / 2683 / 1228
Регистрация: 24.04.2014
Сообщений: 8,211
03.06.2018, 19:34 #13
Цитата Сообщение от sasha0012 Посмотреть сообщение
Мне в голову пришёл такой вариант: x = y-25%/m/t где x - количество запросов в секунду, y - оперативная память, m - пиковое потребление памяти скриптами, t - время выполнения скрипта (которое зависит от частоты процессора (Ghz))
Не сходятся размерности.
0
tarasalk
1089 / 643 / 261
Регистрация: 13.06.2013
Сообщений: 2,256
03.06.2018, 19:48 #14
Есть как минимум 2 проблемы:
1) Затраты ресурсов величина переменная. Банально изменилась БД и сразу все по другому.
2) То что у вас на локалке уходит 12мб, не означает что на хостинге будет также.
0
03.06.2018, 19:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2018, 19:48
Привет! Вот еще темы с решениями:

создание проекта
Начал снова изучать с. Когда создал проект, то написал простейшую программу:...

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

Создание проекта
Создать проект согласно документу и выполнить задания по порядку, выполняя...

Создание проекта
Создаю проект и нужно чтобы в нем был файл с расширением .cpp , но получается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru