|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
Как увеличить производительность сайта в облаке20.07.2016, 18:27. Показов 1703. Ответов 20
Метки нет (Все метки)
Гуру, обьясните "на пальцах"! У меня (пока) теоретический вопрос!
Есть проект на дешевом хостинге (одно ядро, мало памяти, обычная база MySQL). Выдерживает около 4-5 тяжелых операций в минуту (в основном заливка больших данных в базу MySQL). Это 2-4 одновременно обратившихся пользователя в минуту. Как увеличить производительность перенеся ПОДОБНЫЙ сайт в облака??? Например раз в 10-100... Например перенеся свой хостинг в облако Amazon... Что дает облако? База будет быстрее добавлять записи? Если докуплю еще 100 ядер и еще 200Гб памяти - это ускорит работу с базой? ...представляю как "нарезать" подобный процесс на отдельные сервера (выделить по одному серверу на 20-100 пользователей и выделить "общий" сервер "переадресации"), но не на одном "связанном" сервере...
0
|
|
| 20.07.2016, 18:27 | |
|
Ответы с готовыми решениями:
20
Увеличить производительность сайта Как хранить фото на облаке для WP сайта? Как увеличить производительность |
|
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
|
|||
| 20.07.2016, 19:53 | |||
|
Добавлено через 2 минуты
0
|
|||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||||
| 20.07.2016, 19:58 | |||||
|
Нужно тестировать, либо как минимум можно сравнить, сколько ресурсов они предоставляют.
1
|
|||||
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||
| 21.07.2016, 01:46 [ТС] | ||
|
Возможно проще будет если я детальнее обьясню задачу: Сейчас пишу сервис, который от одних клиентов получает большие базы данных (десятки-сотни тысяч записей за раз в текстовике, в архиве) и хитро раскидывает их по базам на сервере. Потом на основе этих записей формируются и выгружаются отчеты. Я и так максимально ускорил процесс импорта в базы, но все равно не получается это сделать меньше чем за 12-18 секунд на локальном хостинге который куда мощнее дешевых... (и транзакции, и "пакетные заливки", и даже укоротил код, убрав критические проверки - опасно, но целых 4-6 секунд экономлю! Осталось лишь "втроенные в MySQL функции" использовать). И это только для одного (тестового) юзера! Если "повезет" и в одну минуту "ломанутся" 10 юзеров - PHP-сервер выдаст всем таймаут! Пытаюсь разработать концепцию "очереди" и просчитать/посадить обработку очереди на Node.js/Pyton (там можно залить базу, а сервис сам решит когда ее стоит обрабатывать), но это не решит проблему сервера! Да и клиент не должен долго ждать! Если делать сервис с учетом 1К-10К-юзеров способных залезть почти одновременно ("хабраэффект"), то надо кардинально подход менять и хостинг тоже учитывать! Сейчас "торможение" происходит именно на этапе заливки (все остальное - миллисекунды). Основные блоки - найти запись, прочитать ее, проверить поля на изменения, добавить новые или изменить старые в зависимости от условий... На 15-40 тысяч записей сильно тормозит!!! Но может быть и больше... И "заливающий клиент" не один... Если нагрузка вырастит в 1000 раз, а я в 1000+1 раз увеличу в таком "облаке" характеристики процессора и памяти - система выдержит? Или надо на другой тип базы данных переписывать - под сервер "предоставленный облачным хостингом"? Пока это конечно теоретические вопросы, но я не уверен что сейчас система выдержит даже 10-кратного повышения нагрузки! Ищу решения... Слышал что Амазон (и аналоги) дают "динамические" сервера - "надо больше - бери - заплатишь за больше", но сам пока из подобного ничего не использовал! ![]() 2wq не смешно!
0
|
||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||||
| 21.07.2016, 07:52 | ||||
|
У вас сервер. В облаке тоже сервер. В обоих случаях вам предоставляются какие-то ограниченные ресурсы. Сколько ресурсов хотите - столько и покупаете, неважно где.
0
|
||||
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||||
| 21.07.2016, 18:16 [ТС] | ||||
|
1) У "циклической" программы на Ноде/Питоне не бывает задержек! Крон требует хотя-бы секунду ждать до следующего раза. А значит пол секунды приходиться ждать... Или будет каждую секунду выполнять скрипт проверки базы (нода может держать списки "в памяти" - питон думаю тоже) 2) Очередь есть очередь. И не важно на чем она написана! Надо дождаться завершения прошлой задачи, убедиться что она закончилась и стереть запись в очереди. В идеале отправить сигнал пользователю об окончании обработки (через сокеты ноды это сделать куда "экономнее"). А еще надо обработать нормальный таймаут - вдруг глюк и скрипты зависнут. 3) Надо учитывать многопоточность - некоторые задачи чисто математические - их можно одновременно выполнять. Например 4 задачи одновременно в обработке удерживать (по количеству ядер). 1) Надо выполнить 60-100 тысяч SQL запросов в одном обращении к php-скрипту (и на запрос и на запись). 2) Это занимает на среднем компе 8-15 секунд (не на самой большой базе). 3) Если в одну минуту залезут 100-1000 юзеров, то скорее всего получу таймаут на все запросы (8*100>800, а таймаут через 30-60 сек). В идеале хочу купив хостинг "в облаке" добиться того что каждого юзера будут обрабатывать не дольше 15 секунд в не зависимости от количества обращений юзеров... Такое вообще возможно на таких хостингах? Я не до конца понимаю принципы MySQL в облаке (на нескольких "связанных" серверах), с общим кешированием запросов, удержанием частых обращений в памяти и т.д... У меня десяток таблиц, но в каждой таблице могут быть данные баз по тысяче юзеров (разделяются полем "user_id"). Как увеличение ядер до 30 в облачном хостинге может подобное ускорить??? и во сколько раз? Как это отобразиться на моем коде в PHP при обращении к такой базе данных? Там свое API работы с базой, или API осталось от MySQL?
0
|
||||
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
||
| 21.07.2016, 18:25 | ||
|
Tester64, хотите большей производительности 1. Анализ лога медленных запросов, оптимизация запросов 2. Перенос базы данных, таблиц в память сервера, использование Memory таблиц 3. Использование кеширования каждая задача, проект требует своего подхода
1
|
||
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|||
| 22.07.2016, 02:27 [ТС] | |||
|
Я думал все это уже предусмотрено в "облачных хостингах" и сделано так чтобы кодеры вроде нас не должны были сильно заморачиваться с оптимизацией! 1) уже проделал! запросы свел к минимуму. Там где это возможно заменил все одним. Даже использую пакетную отправку через $db->multi_query($sql_global), где в $sql_global зажато около 20 тысяч запросов INSERT INTO table1 () VALUES () ON DUPLICATE KEY UPDATE. Так я сократил импорт с 40-60 секунд до 7-14. Следующий шаг оптимизации - это уже писать встроенные функции MySQL. И таблицы довольно оптимизированны по полям, и индексов добавил ровно столько сколько нужно 2) как подобное делается? Типа виртуальный диск в памяти и база на нем? С последующей синхронизацией на реальный диск? Проблема в том что подобные большие выгрузки делаются каждой фирмой не чаще 1-3 раз в сутки. Иногда 1 раз в 3-7 дней. Неужели надо все это в памяти хранить??? На всех юзеров? С Memory таблицами не разобрался! В чем разница от MySQL таблиц? 3) я за! но не понимаю как к этому подойти! Куда гуглить? И опять-же... я думал все это предусмотрено в "облачных хостингах"Я думал что если я перевожу свой сервер в облако, то могу "раздуть" свой проект хоть до 100 ядер и до терабайта памяти... а значит и проект будет работать АВТОМАТИЧЕСКИ в 50-100 раз быстрее... по крайней мере на 100 одновременных юзерах... А тут похоже ничего не получаю от облака кроме ускорения чисто математических операций и требующих памяти... Добавлено через 2 часа 36 минут Цифры РЕАЛЬНЫЕ! Тестировал на одном МАЛЕНЬКОМ клиенте. (торговая фирма). Записей было 20-25тысяч. Лично знаю клиента у которого данных в 50-100 раз больше.
0
|
|||
|
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
|
|
| 22.07.2016, 10:49 | |
|
1. В настройках mysql включение лога медленных запросов. Далее с помощью Explain просмотр выполнения запросов и оптимизация использованных индексов
2. Смотрите тип таблиц Memory 3. Кеширование может быть разное, как модуль для mysql так и использование на уровне приложений memcache, redis ...
0
|
|
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||
| 22.07.2016, 20:51 [ТС] | ||
|
1) УЖЕ проделал! (см. выше). Осталось не опробованным лишь "втроенные процедуры MySQL". 2) а зачем??? Суть в чем: получить новые данные по записи от клиента (перебором полученного пакета в несколько тесяч записей) поискать такую строку в таблице если есть, сравнить по значениям если не изменилось - берем следующую строку если новая - добавить строку в 1-2 таблицы если изменилась - изменяем в 1-2 таблицах (итого 8-100 тысяч запросов на чтение или изменение) я еще думал делать запрос по фирме из общей таблицы в таблицу в памяти, там все менять, а потом выгружать целиком (и измененные и нет), но проблем будет много, и конфликты с другими фирмами начнутся... 3) я вообще-то расчитывал на кеширование на уровне MySQL+облака! Типа там все встроено, ускорено, оптимизированно... 10 потоков на работу с базой на 10 виртуальных процессорах обрабатывает со скоростью как на одном... Короче! кончайте мне "помогать" оптимизировать мою задачу! Ответьте внятно наконец на вопрос - что МНЕ (кодеру php+MySQL) даст ОБЛАЧНЫЙ хостинг вроде Амазона??? Я уже понял что никакая оптимизация не поможет мне ускорить на обычной машине заливку такого обьема данных, если тормозит на "i3", а обьемы планируются в 100-1000 раз больше! Я уже понял что нужно НЕСКОЛЬКО серверов! (в час пик) Теперь вопрос - писать "нарезку на сервера" самому и покупать несколько хостинг-серверов или все то-же УЖЕ встроено в один "ЕДИНЫЙ" виртуальных "облачный" хостинг уровня Амазон??? Мне некогда, (да и нечем пока) проводить тесты на выносливость амазона! Мне нужна сначала ТЕОРИЯ этих серверов, чтобы начать "вычитывать"/гуглить! Для чего их вообще делают???
0
|
||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||
| 22.07.2016, 21:31 | ||
|
Tester64, к чему эти эмоции?
Если вам этого объяснения мало, зайдите сюда (к слову, первая ссылка в гугле), там всё написано, и даже про максимальное количество операций ввода-вывода в секунду. Если мало и этого - звоните/пишите в техподдержку амазона, они вам всё подробно разжуют.
1
|
||
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|||
| 22.07.2016, 23:20 [ТС] | |||
|
Если я перенесу свою программу (php+MySQL) "в облака", то оно СРАЗУ заработает в 10-100 раз быстрее на параллельных запросах или мне предстоит еще переписать свою программу "под базы амазона"? Еще раз: СЕЙЧАС - один вызов скрипта выполняется 7-15 секунд на одноядерном хостинге. Если 4 одновременных запроса отправляю - думает над всеми в 4 раза дольше выходя за лимит в 30 сек и получаю таймаут! ХОЧУ - чтобы 100 одновременных php скриптов от разных юзеров думали не дольше 7-15 секунд! Хочу понять основы, прежде чем задавать ТУДА глупые вопросы... Не по теме: Пока даже зарегистрироваться на амазоне не получилось! :(
0
|
|||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||||||
| 23.07.2016, 00:20 | ||||||
|
1
|
||||||
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|||
| 23.07.2016, 01:30 [ТС] | |||
|
Спасибо! думаю основы понял... дальше буду вычитывать и пробовать. Думаю вопрос можно закрывать!
Я должен САМ научиться настраивать хостинг! Надоело зависеть в мелочах от админов, когда тебе даже пароль надо изменить или прописать новые настройки в nginx... Дальше наверное буду задавать вопросы в ветке https://www.cyberforum.ru/hosting/ может кто там работал с амазоном...
0
|
|||
|
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
|
|
| 24.07.2016, 22:01 | |
|
Тысячи(сотни тысяч) запросов из клиента к бд делает дилетант не понимающий элементарных основ проектирования
0
|
|
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
| 25.07.2016, 15:00 [ТС] | |
|
0
|
|
|
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
|
|||
| 25.07.2016, 15:29 | |||
|
еще раз
Уже бы давно привели кусок скрипта где вы делаете 100т запросов на чтение и запись. Уверен что все сокращается до одного-двух SQL запросов
0
|
|||
| 25.07.2016, 19:22 [ТС] | |||
|
Не по теме:
Надо из учетной системы клиента выгрузить на сайт всех клинетов и все товары со списком всех цен по нескольким категориям (оптовая, розничная, супероптовая, для мастеров, ... в моей тестовой МАЛЕНЬКОЙ базе таких АКТИВНЫХ категорий всего 9, а знаю фирму, где их больше 20, а в маленьком супермаркете видов товаров больше 100тыс(личный опыт) и минимум 2 цены(>300тыс)). тестовая задача: у меня всего 1000 клиентов, всего 6000 товаров, всего 6000*9 цен (а это маленькая база). И это не предел "видов записей" - дальше планируется рост сложности. Бывают и "вип-цены" и скидки по группам товаров и много чего другого, что тоже надо выгрузить. Выгрузка идет одним архивом с кучей текстовиков или xml файлом. Файл достигает иногда нескольких мегабайт. Надо: пропарсить файл и для каждой записи проверить наличие в базе на сервере 1) если нет - сразу создать новую (insert) и добавить (insert) в "таблицу изменений" дату и источник. 2) если есть - проверить (select) на отличие по группам полей и внести изменения(update) в таблицу + (insert/update) добавить/изменить дату внесения и источник в "таблицу изменений". (подсчитал количество запросов на каждую запись - на чтение и запись?) я еще ничего не сказал про ежедневные продажи и документы по ним... база пока даже не доросла до подобных нагрузок! "таблица изменений" нужна для того чтобы выгружать запрашиваемым лишь те что изменились - запрашиваемые потом отправляют маркер "скачано" и таблица изменений очищается - так я сокращаю выгрузки иногда в десятки раз - устройства у запрашиваемых медленные и полный пакет может грузиться не секунды, а до 15 минут. Задача ясна? фирм на сегодня 4. Выгрузка идет раз-два в сутки. В идеале должно быть около 5-15 раз в сутки в рабочее время. Затягивание пакета в базу длится 7-15 секунд (после того как я цены выкинул из "таблицы изменений" заменив на "пакетный импорт" через "INSERT INTO table1 () VALUES () ON DUPLICATE KEY UPDATE" ). А система должна быть рассчитана (в идеале) на сотни-тысячи фирм, которые могут "ломануться" одновременно в первые 5 минут после обеда... p.s. на крупных фирмах с филиалами или дистребьютерах подобное часто используется! Правда обычно без отдельного сервера, а прямо в учетных программах. Я пытаюсь написать аналитику прямо на веб-сервере и мне нужна общая оптимизация.... А ты трижды засорял мою тему комментариями не по делу!!!
0
|
|||
|
85 / 78 / 32
Регистрация: 26.11.2015
Сообщений: 481
|
|
| 25.07.2016, 21:00 | |
|
0
|
|
|
1992 / 1216 / 440
Регистрация: 13.06.2013
Сообщений: 4,115
|
||
| 25.07.2016, 21:49 | ||
|
0
|
||
| 25.07.2016, 21:49 | |
|
Помогаю со студенческими работами здесь
20
Как увеличить производительность программы? Как увеличить производительность компьютера? Как увеличить производительность работы? Как бюджетно увеличить производительность? Как увеличить производительность проца? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|