Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 14
1

Как уменьшить выделяемую память для PHP скриптов?

05.09.2011, 02:09. Показов 2229. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Linux 2.6.32 + PHP Version 5.3.3-7+squeeze3

Когда пользователь заходит на php-страницу, то сервер выделяет оперативную память для выполнения php скрипта. А есть на страницу одновременно зашло 100 тыс человек, то сервер выделит 100000 * объем под один скрипт? если да можно настроить чтобы выделялась только память под данные, а под бинарный php-код выделялась оперативка только один раз ? если нельзя, то хотя бы как уменьшить объем памяти под каждую копию одного и того же выполняемого php скрипта?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2011, 02:09
Ответы с готовыми решениями:

Сократить время работы и выделяемую память
Помогите оптимизировать программу. using System; class Program { static void...

Помогите оптимизировать память, выделяемую под массив.
Имеются три таблицы, в каждой 49800 строк, содержащих три столбца: 1. Порядковый номер. 0-49799,...

Какая польза от использования dynamic - экономит ли память,выделяемую на переменные?(т.е одна вместо многих)
Какая польза от использования dynamic - экономит ли память,выделяемую на переменные?(т.е одна...

Уменьшить используемую память для программы
Вот сама задача: Задана последовательность целых чисел. Числа нумеруются по порядку следования,...

8
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
05.09.2011, 11:01 2
1) Изуйчас Hi-load рассказы
2) Попробуй memcache.
3) Память выделяется динамически, то-есть каждый запрос берет сколько надо, а не максимум.
0
Почетный модератор
11525 / 4320 / 448
Регистрация: 12.06.2008
Сообщений: 12,412
05.09.2011, 11:16 3
Я сильно сомневаюсь, что на твой сервер одновременно зайдут 100 тысяч человек. Для таких нагрузок делают несколько очень мощных серверов.
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
05.09.2011, 11:36 4
А вообще, я думаю на такие проекты можно уже в облако лезть и не париться о количестве ядер/оперативы. Да и 100к юзеров позволят это оплатить.
0
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 14
05.09.2011, 19:31  [ТС] 5
Цитата Сообщение от Humanoid Посмотреть сообщение
Я сильно сомневаюсь, что на твой сервер одновременно зайдут 100 тысяч человек. Для таких нагрузок делают несколько очень мощных серверов.
Ну так у меня и про кластерные системы вопросы будут, а пока даже если есть средства купить кучу серваков то это же не значит что не надо оптимизировать, у меня простой нересурсоемкий скрипт, но к нему очень много одновременных запросов.

Добавлено через 3 минуты
Да еще одно, есть ли разница в моей проблеме при php как модуле апача или как fast_cgi ?
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
06.09.2011, 12:00 6
Второе быстрее. Но надо больше волноваться о безопасности.
0
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 14
06.09.2011, 16:07  [ТС] 7
Понимаю, все зависит от конкретной задачи, вот вкратце: Несколько простых небольших php скриптов + mysql , но большое кол-во одновременных запросов к страницам от пользователей через серверные редиректы на php скрипты. большая БД, чтение по индексам = 95% от всех запросов, запись/обновление базы = 5%.

И покопав сутки интернет, вот что я выбрал... Прошу кидайте коменты, ниже написал два вопроса.

Оптимизация.

1. использовать php транслятор HipHop, он же кеширует байткод.
2. кешировать обращения к MySQL, использую Memcached.
3. кешировать статику и динамически создаваемые скриптами html страницы, используя Squid или лучше Varnis.
4. разделение статики и динамики, под первое юзать lighttpd или nginx на отдельном ip или поддомене, для второго web-сервер HipHop.

Получается например такая связка: Linux+lighttpd+Varnis+HipHop+Mysql

Масштабируемость. кластеризация БД - поддержка нескольких датацентров и возможность добавления новых машин в работающий кластер прозрачно для ваших приложений. (MySQL для этого не особо годиться - http://www.linuxshare.ru/docs/mysql/nocluster.html). но можно использовать Cassandra или Riak.

Стабильность. Про утечки памяти на такой системе кто что может сказать?

Вопросы:

1. как сделать редиректы на php страницы (например с /dir/page1234 на page.php?n=1234 ) ? не понимаю механизма т.к. при использовании
lighttpd+hiphop или nginx+hiphop получается два web-сервера, какой надо настраивать чтобы сделать редирект на php страницы? на lighttpd в
url.rewrite-once = что то типа этого "^/dir/(\d+)/?$" => "page.phpn=$1" , но есть надо настраивать через сервер hiphop то как?

2. как работает Memcached, Squid, Varnis если под сайт отведены несколько физических серверов? из оперативки или жесткого диска какого сервера будет браться кеш? можно ли то сделать прозрачно?
0
163 / 163 / 9
Регистрация: 08.01.2011
Сообщений: 850
06.09.2011, 16:25 8
Memcache на сервер базы данных, это кеш в памяти. На high-load проектах кеш на диске почти бессмысленный, кроме каких-либо редкоизменяемых, но все же динамических деталей.
Смысл Squid? Что он будет делать?

P.S. за такие нагрузки сам не брался, буду рад, если расскажешь что/как/зачем/получилось ли/костыли/etc .
0
1 / 1 / 0
Регистрация: 05.09.2011
Сообщений: 14
06.09.2011, 18:28  [ТС] 9
Цитата Сообщение от KoIIIeY Посмотреть сообщение
Memcache на сервер базы данных, это кеш в памяти. На high-load проектах кеш на диске почти бессмысленный, кроме каких-либо редкоизменяемых, но все же динамических деталей.
Смысл Squid? Что он будет делать?

P.S. за такие нагрузки сам не брался, буду рад, если расскажешь что/как/зачем/получилось ли/костыли/etc .
я просто в кучу все свалил в вопросе) Memcache конечно в оперативке кеширует, вопрос в том как устроен механизм распределения между разными физ машинами, я так понимаю что при таком кластере сначала надо определить какая машина будет обрабатывать запросы конкретного пользователя в зависимости от той части ДБ которая ему нужна и соединить его именно с этой машиной.

Squid или Varnis нужны чтобы разгрузить сервер от необходимости моим php скриптам генерить одни и те же html. Идея была такая (опишу простыми словами) - чтобы наши php скрипты при изменении БД удаляли из кеша старые html что дает гарантию обращения к php при новом запросе страницы для генерации нового html, иначе web-сервер будет выдавать статику из кеша без обращения к php.
0
06.09.2011, 18:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2011, 18:28
Помогаю со студенческими работами здесь

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

Как уменьшить память которую использует программа?
На олимпе, когда ты уже отправил решение есть графа: память)))) Так вот: как уменьшить используемую...

Бесплатная IDE для отладки php-скриптов?
Хочу найти бесплатную среду разработки под Windows 8 x64. Какой бесплатной средой разработки и...

Как повысить производительность PHP скриптов
Необходимо повысить производительность PHP скриптов. Скрипты работают с БД PostreSQL. Существуют...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru