Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 17 из 64<  1 ... 14  15  16  17  18  19  20 ... 64  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
любыми средствами

Докупить оперативы на сервак, разогнать проц(ы) на серваке, и.т.д.

А програмно остаётся только кешировать сложные выборки (в файлах или временных таблицах)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...



Партнер
 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
ок, наконец выдалось немного времени :)
Из собственного опыта (был опыт наступания на многие из описаных мной граблей):

1 - если вы делаете что либо на выделенном сервере - первое с чего надо начать, это выбор ОС и програмного обеспечения...
Ну ось конечно в большинстве случаев Linux. Да, тут всё правильно и по большей части это ясно всем.
Но вот дальше...
Что? Я слышу Apache + PHP?! Вы считаете это верным ответом? Почему я не считаю? Всё просто:
a. Apache жрёт много памяти - apache server + php, так как PHP работает как модуль, то один запущеный процес обслуживает одно соединение. 100 соединений - 100 копий Apache (грубо конечно, но если у вас порядка 200-300 запросов в секунду есть, то это лёгко. кстати, запрос - это не только сам вызов скрипта, но это ещё загрузка каждой из картинок, что у вас есть на данной странице, CSS фаилы, так что открывая одну страничку вы реально делаете не 1 запрос, а от 10-15 до 50-60, в зависимости от кол-ва графики), что выливается ~600 мегабайт съеденной оперативной памяти (чем больше в PHP библиотек скомпилино, тем больше памяти есть + сами скрипты порой жрут весьма не мало памяти, так что можете смело ещё накинуть 100-200 метров. при этом apache всегда держит в запасе дочеркие процесы, поэтому если на первый взгляд работают всего каких 10-15 в данную секунду, всёравно все 100 будут висеть в памяти. Так работает Apache...). А если более-менее посещаемый сайт - с apache это очень легко. Реальная альтернатива - Lighttpd. Он не только в десятки меньше памяти занимает но и примерно на 30% быстрее в связке Lighttpd + PHP против Apache + PHP. А поскольку Lighttpd сделан что бы выдерживать высокие нагрузки, что кстати не по силам apache, после достижения определённого кол-ва запросов в секунду apache зарывается носом в землю, Lighttpd наоборот же, набирает ещё больше оборотов - тестов в интернете хватает - стоит только немного погуглить. Одно НО - с Lighttpd PHP работает как FastCGI, но пока минусов этого метода я не видел и не встречался с какими либо ограничениями из-за этого.

Для примера, имею весьма нагруженный torrent трекер - 25 тысячь пользователей, более 21 тысячи соединений, по 350 человек сидящих на WEB по вечерам... Это весьма не хилая нагрузка, которая по зубам лишь двуядерной машине (одноядерных процесоров, способных с этим в данный момент просто не существует :)). Раньше стоял Apache + PHP5 первых ещё версий, 5.0.6 кажется. Потребление оперативной памяти только WEB сервером было ~700MB + MySQL съедал своё. Всё тормозило жутко, по вечерам почти DDOS :) 100% нагрузка. Установка Lighttpd и PHP 5.1.2 свело потребление памяти до жалких 300 MB в общем (это и ОС, и WEB сервер, и MySQL). Выделил больше памяти для MySQL, появилось свободное процесорное время. В итоге после этого набрали где-то 7000 новых пользователей, кол-во соеднинений, которое выдерживал сервер, поднялось на 40%. Да и при 100% нагрузке больше не чуствовалось то, что сервер перегружен. С небольшим таймаутом, но всё загружалось. Так что мотайте на ус, Lighttpd дествительно очень мощьная штука, его стоит освоить и использовать. Я с Apache уже распрощался :)

2. Выбор ОС.
Очень многие говорят про FreeBSD. Да, возможно последние самые версии и уже доведены до ума в плане многопоточности, но до моего парихода в этот проэкт стояла FreeBSD 5.4... С многопоточностью там было туго. Снёс всё, поставил Linux (конкретно если дистр - я использую Gentoo. Естественно я его отюнинговал по самые помидоры, вся ОС собрана мною, ничего из тех бинарников, что были на LiveCD не осталось, я делал полную пересборку системы. Зачем - будет ясно дальше). Кажется поставил и забыл. А не тут то было. Вы слышали о NTPL (Native Posix Thread Library) - это замена морально и физически устаревшей LinuxThreads. Поскольку ещё не везде стоит NTPL в новых дистрах, либо система собрана с поддержкой обоих библиотек, мною была убрана LinuxThreads вообще из ядра и выставлен флаг ntplonly для glibc (ещё раз напоминаю, я использую Gentoo, там такие настройки выставляются одной единственной командой и не нужно делать что-либо с исходниками - система сама всё умеет - за это я его обажаю :)). Чтож, прирост скорости был феноменальный для MySQL, потому что он очутился в своей родной среде. А многопоточность под Linux всегда была отличной, а с NTPL это вообще убойная комбинация. В общем результате смена ОС и компиляция ПО с настройками флагов компиляции позволила выйграть ещё весьма приличное кол-во ресурсов - с месяц я не знал проблем, а за месяц набежало ещё около 5 тысячь пользователей, были добавлены новые возможности в трекер, повысилось кол-во пиров.

Ну конечно програмное обеспечение тоже не возможно оптимизировать до бесконечности, есть операции, которые просто требуют ресурсов и там уже ничего не сделаешь, нет, сдделать то можно, убрав какую-то фишку - но это скорость в угоду функционалу. Нас это не устраивало. Посему мы просто преобрели новый сервер. О выборе железа ниже...

3). Выбор железа. Вообщем то чем мощьнее - тем лучше. Но есть некоторые моменты. К примеры мы когда выбирали сервер - сделали выбор в пользу AMD, знакомый программист (дядька с опытом больше 10 лет WEB разработок) посоветовал взять 64 битные Athlon. Говорил что от 64 битности MySQL просто звереет. Мы взяли AMD X2 3800+, 2 гига рама (реально гига хватает выше крышы, но с заделом на будущее взяли, память ещё пригодится для memcache). Чтож, он был прав. Если раньше MySQL съедал половину а то и больше ресурсов, то щас он съедает от силы по 5% от каждого ядра нашего нового сервачка, а скорость работы просто зверская - загрузка SQL дампа базы занимает примерно 2 секунды. Это damn f***ing fast (сори за это, но по другому выразится очень сложно было) :). Так что при выборе железа делайте выбор всё же в пользу а). Двуядерных процессоров. б). 64 бита далеко не лишние для базы данных. - если у вас более-менее нагруженный проэкт конечно :)

О коде в следующем посте.


 

*Cofradia Intel*
Статус: Не в сети
Регистрация: 06.12.2005
Откуда: Ростов-на-Дону
_Psih спасибо, очень гут, только вот скажи, Gentoo ты с лив сиди что ли крутил ? :) и замечены ли какие глюки с 64-битным софтом ? :)

_________________
modlabs.net


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
выше крышы

Гы
_Psih писал(а):
Lighttpd PHP работает как FastCGI, но пока минусов этого метода я не видел

Вперёд читать ман
_Psih писал(а):
Lighttpd сделан что бы выдерживать высокие нагрузки

Только вот чтоб юзать реврайт придётся делать альтернативными методами, ибо "нативного" реврайта у него нету (хотя я могу и ошибаться)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
_Psih писал(а):
выше крышы

Гы
_Psih писал(а):
Lighttpd PHP работает как FastCGI, но пока минусов этого метода я не видел

Вперёд читать ман
_Psih писал(а):
Lighttpd сделан что бы выдерживать высокие нагрузки

Только вот чтоб юзать реврайт придётся делать альтернативными методами, ибо "нативного" реврайта у него нету (хотя я могу и ошибаться)

Насчёт FastCGI... ну незнаю, что такое специфичное надо юзать, что бы нужен был apache :) Опять же, все эти навороты apache юзаются крайне редко, по большей части они висят там мёртвым грузом занимая память и процесорное время.

mod_rewrite есть, такой модуль присутствует в Lighttpd... просто он не такой навороченный как в apache, зато быстрый в отличии от первого, почти не замедляет WEB сервер.

DZhon писал(а):
_Psih спасибо, очень гут, только вот скажи, Gentoo ты с лив сиди что ли крутил ? :) и замечены ли какие глюки с 64-битным софтом ? :)

Ну я его ставил на хард с LiveCD :)
Глюков в 64 битами не наблюдается, всё работает.


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Сегодня вечером напишу по коду :)
Добавлено спустя 10 часов, 18 минут, 33 секунды
virus писал(а):
_Psih писал(а):
любыми средствами

Докупить оперативы на сервак, разогнать проц(ы) на серваке, и.т.д.

А програмно остаётся только кешировать сложные выборки (в файлах или временных таблицах)

Между прочим разгон и сервера совсем не совместимы - там главное надёжность и долгота службы, а микросхемы при разгоне, как вы знаете, теряют свой ресурс куда быстрее.
Добавлено спустя 1 час, 24 минуты, 32 секунды
Чёрт... накатал целое сочинение, а сайт взял да сглючил с авторизацией... челый час парился и всё на смарку :(
Придётся писать заного, но уже не сегодня...


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
Между прочим разгон и сервера совсем не совместимы

Это какие-то не оверские сервера ты имеешь в виду :D
(на этом сайте статья была как дуальный ксеончик погнали чтоб PCMark погонять)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 20.09.2005
Откуда: Kiev, Ukraine
Привет всем!
Нужна помощь с проектом на PHP!
У меня не очень получается реализовать запуск внешних программ в PHP. Пробывал и system, и exec, и passthru - что то не выходит... :(
Для начала мне нужно просто откомпилировать прогу на паскале паскалевским компилятором чрез скрипт php....
Если не сложно - приведите пример как это сделать! Заранее спасиб! :beer:

з.ы Что то я не нашел встроенной функции типа delay в PHP.... Sleep это не совсем то что нужно.... Есть альтернатива?

_________________
AMD "Steel Tigers" Team!


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Serhios писал(а):
Привет всем!
Нужна помощь с проектом на PHP!
У меня не очень получается реализовать запуск внешних программ в PHP. Пробывал и system, и exec, и passthru - что то не выходит... :(
Для начала мне нужно просто откомпилировать прогу на паскале паскалевским компилятором чрез скрипт php....
Если не сложно - приведите пример как это сделать! Заранее спасиб! :beer:

з.ы Что то я не нашел встроенной функции типа delay в PHP.... Sleep это не совсем то что нужно.... Есть альтернатива?

Тебе надо откомпилить прогу (само собой) - это 1. 2 - какая ОС?

кроме sleep есть ещё
Код:
time_nanosleep();
usleep();

Они не имеют реализации для Windows.


 

Member
Статус: Не в сети
Регистрация: 20.09.2005
Откуда: Kiev, Ukraine
_Psih
Дык мне через скрипт нужно откомпилить паскалевскую прогу....
ОС - windows

_________________
AMD "Steel Tigers" Team!


 

Member
Статус: Не в сети
Регистрация: 31.08.2005
Откуда: Мир
Вот такой вопрос..как можно скрещивать php и откомпилированное С++ приложение?
чтобы шла обыная страница..а потом гдето в средине посчет каких то данных был выполнен с помощью cgi приложения. причем что бы можно было послать какието значения и получить результат. заранее благодарен )

_________________
Loading...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
pretorian писал(а):
Вот такой вопрос..как можно скрещивать php и откомпилированное С++ приложение?
чтобы шла обыная страница..а потом гдето в средине посчет каких то данных был выполнен с помощью cgi приложения. причем что бы можно было послать какието значения и получить результат. заранее благодарен )

Код:
string exec ( string command [, array &output [, int &return_var]] )

Задаёшь команду, в output получаешь данные (программа должна их выводить в стандартный поток вывода - ака на экран в консоль).

Serhios
Хм, ещё скажи через WEB...
А вообще вызываешь фаил компилятора, задаёшь как параметр входной фаил, он тебе выдаст exe с таким же именем в ту же папку где был запущен. Пробуй, эксперементируй. Я такими извращениями не занимался :D


 

Member
Статус: Не в сети
Регистрация: 31.08.2005
Откуда: Мир
Код:
string exec ( string command [, array &output [, int &return_var]] )

Задаёшь команду, в output получаешь данные (программа должна их выводить в стандартный поток вывода - ака на экран в консоль).

exec ("script.cgi",$output);

так чтоли?
что то ниче не выводит...

я написал
Код:
exec ("script11.cgi",$output);
echo "otvet:";
print_r($output) ;


а выдаёт:
otvet:Array ( )


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
pretorian писал(а):
Код:
string exec ( string command [, array &output [, int &return_var]] )

Задаёшь команду, в output получаешь данные (программа должна их выводить в стандартный поток вывода - ака на экран в консоль).

exec ("script.cgi",$output);

так чтоли?
что то ниче не выводит...

я написал
Код:
exec ("script11.cgi",$output);
echo "otvet:";
print_r($output) ;


а выдаёт:
otvet:Array ( )

Вобще-то если ты таким образом запускаешь приложение, оно должно быть написано под консоль, а не под WEB. К тому же если у тебя Windows, это должен быть .exe
В любом случае, даже если и Linux, то так же С++ приложение должно ыбть расчитано на работу в консоли а не с WEB сервером. Либо через CGI WEB сервера как WEB приложение, либо из PHP как консольное приложение.


 

Member
Статус: Не в сети
Регистрация: 31.08.2005
Откуда: Мир
_Psih писал(а):
Вобще-то если ты таким образом запускаешь приложение, оно должно быть написано под консоль, а не под WEB. К тому же если у тебя Windows, это должен быть .exe
В любом случае, даже если и Linux, то так же С++ приложение должно ыбть расчитано на работу в консоли а не с WEB сервером. Либо через CGI WEB сервера как WEB приложение, либо из PHP как консольное приложение.


Подскажите плиз как реализовать мою идею!!
эта прога на С++ и есть консольное приложение...


 

Member
Статус: Не в сети
Регистрация: 20.09.2005
Откуда: Kiev, Ukraine
_Psih я пишу:
Код:
exeс("Z:\home\localhost\www\tpc.exe (компилятор паскаля) Z:\home\localhost\www\Test.pas");

Скрипт завершает работу без ошибок, но файл Test1.exe (всмысле уже откомпиленый) не создается! В чём трабла?
Добавлено спустя 58 секунд
з.ы через командную строку работает...

_________________
AMD "Steel Tigers" Team!


 

Advanced member
Статус: Не в сети
Регистрация: 09.03.2004
Откуда: Кишинёв
Serhios Я далёк от веба немного, но возможно тут проблема с текущей папкой. Т.к. ты для запуска используешь абсолютные пути, то чёрт его знает где щас текущаяя папка и разрешено ли вообще в неё сейчас писать. Также опытным путём выяснил, что tpc.exe не любит длинные имена - лучше их укорачивать до формата 8.3 . Я думаю можно насильно указать tpc папку куда билдить:
Код:
exeс("Z:\home\localhost\www\tpc.exe (компилятор паскаля) Z:\home\localhost\www\Test.pas -EZ:\home\localhost\www");

Ключ -E задаёт папку где будет создана прога.


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Serhios попробуй
Код:
echo "Z:\home\localhost\www\tpc.exe (компилятор паскаля) Z:\home\localhost\www\Test.pas";

и ждёт тебя просветление господне, христос откроет тебе истину великую о вечной жизни и о искуплении грехов :) (и о слешах в строке) ;)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 20.09.2005
Откуда: Kiev, Ukraine
virus не совсем понял, что ты имеешь в виду... :roll: :)
mein что то не пашет.... :( А что если через cmd попробовать?

_________________
AMD "Steel Tigers" Team!


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Serhios писал(а):
_Psih я пишу:
Код:
exeс("Z:\home\localhost\www\tpc.exe (компилятор паскаля) Z:\home\localhost\www\Test.pas");

Скрипт завершает работу без ошибок, но файл Test1.exe (всмысле уже откомпиленый) не создается! В чём трабла?
Добавлено спустя 58 секунд
з.ы через командную строку работает...

Используй в первую очередь ' ', поскольку в " " кавычках одиночный бекслеш трактуется как символ экранирования, поэтому надо было писать так:
Код:
exeс("Z:\\home\\localhost\\www\\tpc.exe (компилятор паскаля) Z:\\home\\localhost\\www\\Test.pas");

Не очень красиво, так что лучше вообще сделать так:
Код:
chdir('Z:\home\localhost\www\');
exeс('tpc.exe Test.pas');

Может надо будет использовать ключ -E как писал mein

P.S. 2All
И вообще, старайтесь использовать " " кавычки только по необходимости, поскольку это не просто кавычки, PHP их просмартивает на наличие переменных, переменных класса, вызовов методов классов, функций - а это затормаживает выполнение скрипта. Если брать чисто разницу между ' ' и " " - то разница в разы. А если много вывода - то и подавно выйграете во времени выполнения. К тому же писать HTML в ' ' кавычках куда удодобнее, не надо бекслешить " " в атрибутах тегов.
Вообщем доктор прописал, пациенту принимать в обязательном порядке :)

P.S.S. http://forums.overclockers.ru/viewtopic.php?p=1852433#1852433 Здесь я выкладывал скрипт и результаты тестирования ' ' vs " " кавычек :)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 17 из 64<  1 ... 14  15  16  17  18  19  20 ... 64  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan