[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: И снова Timeout error ...
Страницы: 1, 2
Strannik
и кстати все равно если ставить апач + MSSQL нужен MS SQL SERVER + Windows... вот если можно было бы обойтись только линуксом было бы весело..
Strannik
Цитата (redreem @ 26.03.2014 - 15:12)
причем тут IIS, если таймаут генерит SQL-сервер?

ок, а что тогда можно сделать по SQL Server, чтобы таймаут исчез/увеличился ?
killer8080
Strannik
а почему дамп заливаете через PHP? У субд нет своих инструментов для этого?

Цитата (Strannik @ 27.03.2014 - 15:53)
ок, а  что тогда можно сделать по SQL Server, чтобы таймаут исчез/увеличился ?

как настроить тайиаут в MSSQL не подскажу, но что мешает пинговать соединение во время работы скрипта? Засекать время последнего запроса, и если превышает определенную величину, вызывать mssql_connect()?
Strannik
Цитата (killer8080 @ 27.03.2014 - 17:13)
Strannik
а почему дамп заливаете через PHP? У субд нет своих инструментов для этого?

Цитата (Strannik @ 27.03.2014 - 15:53)
ок, а  что тогда можно сделать по SQL Server, чтобы таймаут исчез/увеличился ?

как настроить тайиаут в MSSQL не подскажу, но что мешает пинговать соединение во время работы скрипта? Засекать время последнего запроса, и если превышает определенную величину, вызывать mssql_connect()?

Можете подробнее рассказать?

Пример коннекта и выполнения запроса:

$connectionInfo = array("UID" => $GLOBALS["MsSqlUser"], "PWD" => $GLOBALS["MsSqlPassword"], "Database"=>$GLOBALS["MsSqlDatabase"], "CharacterSet" => "UTF-8");
$serverName = $GLOBALS["MsSqlHost"];

$conn = sqlsrv_connect( $serverName, $connectionInfo);

$sql="SELECT * FROM Table";

$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$res = sqlsrv_query($conn,$sql,$params,$options);
sergeiss
Цитата (Strannik @ 27.03.2014 - 17:42)
зашибись обрабатывать данные по 200GB...

В эти 200 ГБ что входит: данные + какая-нибудь разметка или просто данные?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Strannik
Цитата (sergeiss @ 27.03.2014 - 21:25)
Цитата (Strannik @ 27.03.2014 - 17:42)
зашибись обрабатывать данные по 200GB...

В эти 200 ГБ что входит: данные + какая-нибудь разметка или просто данные?

это объем таблиц с данными базы данных
AllesKlar
Цитата (Strannik @ 27.03.2014 - 17:47)
Цитата (AllesKlar @ 26.03.2014 - 17:44)
Strannik
Вебсервер на никсах отдельно, база на винде отдельно, в чем проблема? В железе? Ну 2 виртуальные машины поднять на крайний случай.
Да куча вариантов.

вопрос - а зачем так извращаться?
К примеру сервер с Windows7 + Sql SERVER 2008 обойдется в 3000 - 4000 руб(без лицензий)
И все - траблом с таймаутом на новом сервер пусть занимается ТП сервера(при условии что со соей стороны ты все сделал).
Зачем брать отдельно nix и ставить на него сайт ?

При чем тут извращаться?

Сервер базы данных - это сервер для ХРАНЕНИЯ и ОБРАБОТКИ данных.

Веб сервер - это сервер, обеспечивающий работу скриптов, которые при необходимости, имеют доступ к серверам баз данных.

Убейте своего архитектора и отрубите руки своиме админу.

Оборудование и ПО нужно подбирать с учетом требуемых задач, а не "У нас IIS, потому что нам нужно работать с MSSQL".
Такое заявлять тоже самое, что "завтра едем в суши бар, придется покупать Тоету"

У меня на работе несколько MSSQL серверов на Server 2012 + несколько у клиентов (те, которые не захотели хранить свои базы у нас)

Все же сайты хостятся у нас же на Debian + апач

MSSQL была выбрана исключительно потому, что наши продукты имеют как веб-интерфейсы, так и десктопные приложения, писаные на C#. И плюс MySql реально уступает MsSql в вопросах хранимых процедур, функций и прочих тригеров.

И обслуживает все это у нас всего 2 админа. Два ХОРОШИХ админа.

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

Гонять 200 Гб данных... это ж что там за запрос такой, который хапает за раз 200 ГБ данных? Может стоит посмотреть в сторону оптимизации скриптов? smile.gif

_____________
[продано копирайтерам]
Strannik
Цитата (AllesKlar @ 28.03.2014 - 00:38)
Цитата (Strannik @ 27.03.2014 - 17:47)
Цитата (AllesKlar @ 26.03.2014 - 17:44)
Strannik
Вебсервер на никсах отдельно, база на винде отдельно, в чем проблема? В железе? Ну 2 виртуальные машины поднять на крайний случай.
Да куча вариантов.

вопрос - а зачем так извращаться?
К примеру сервер с Windows7 + Sql SERVER 2008 обойдется в 3000 - 4000 руб(без лицензий)
И все - траблом с таймаутом на новом сервер пусть занимается ТП сервера(при условии что со соей стороны ты все сделал).
Зачем брать отдельно nix и ставить на него сайт ?

При чем тут извращаться?

Сервер базы данных - это сервер для ХРАНЕНИЯ и ОБРАБОТКИ данных.

Веб сервер - это сервер, обеспечивающий работу скриптов, которые при необходимости, имеют доступ к серверам баз данных.

Убейте своего архитектора и отрубите руки своиме админу.

Оборудование и ПО нужно подбирать с учетом требуемых задач, а не "У нас IIS, потому что нам нужно работать с MSSQL".
Такое заявлять тоже самое, что "завтра едем в суши бар, придется покупать Тоету"

У меня на работе несколько MSSQL серверов на Server 2012 + несколько у клиентов (те, которые не захотели хранить свои базы у нас)

Все же сайты хостятся у нас же на Debian + апач

MSSQL была выбрана исключительно потому, что наши продукты имеют как веб-интерфейсы, так и десктопные приложения, писаные на C#. И плюс MySql реально уступает MsSql в вопросах хранимых процедур, функций и прочих тригеров.

И обслуживает все это у нас всего 2 админа. Два ХОРОШИХ админа.

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

Гонять 200 Гб данных... это ж что там за запрос такой, который хапает за раз 200 ГБ данных? Может стоит посмотреть в сторону оптимизации скриптов? smile.gif

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

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

P.S.: к чему говорить про "я бы сделал такую конфигурацию, а я вот такую "? руки связаны бюджетом и поставляемой базой, поэтому и имеем проблему. Сами бы сделали на отдельных серверах. Кстати вопрос был не по конфигурации(хотя и спасибо за мысли, советы лишними не бывают). Конечно можно поставить отдельно Win SQL Server и на обычный хостинг на linux забросить сайт(если потянет) или на VDS выбросить однако это все возможно когда бюджет резиновый.

P.P.S.: По проверке таймаута слышим впервые, кто-нибудь может пояснить или ссылку на тему с описанием сбросить?
Strannik
Цитата (AllesKlar @ 28.03.2014 - 00:38)
Гонять 200 Гб данных... это ж что там за запрос такой, который хапает за раз 200 ГБ данных? Может стоит посмотреть в сторону оптимизации скриптов?

ну запрос пробегается по таблице. может таблица и не 200 GB, но извращения из-за желания клиента приводят к большой нагрузке бд множественными условиями.
sergeiss
Цитата (Strannik @ 28.03.2014 - 00:23)
Цитата (sergeiss @ 27.03.2014 - 21:25)

В эти 200 ГБ что входит: данные + какая-нибудь разметка или просто данные?

это объем таблиц с данными базы данных

Я когда этот вопрос задавал, имел ввиду "какой чистый объем данных". Потому что, как я понял, в эти 200ГБ входит всё: данные, индексы, всякие пустоты в файлах, содержащих таблицы....
И другой вопрос - это всё уникальные данные, которые входят в 200ГБ? Или там что-то дублируется из существовавшего ранее в БД?
Эти все вопросы к тому, что пытаюсь до конца понять всё структуру, может какие еще полезные мысли будут.

Сейчас задача твоя выглядит так: у клиента 3 раза в день появляется 200ГБ контента, который надо залить в БД, но БД не хочет принимать это всё. Говорит, "идите нафиг, таймаут". Поэтому и появляются мысли, что лучше задачу как-то изменить, чтобы найти рабочее решение.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
Цитата (Strannik @ 27.03.2014 - 19:54)
Можете подробнее рассказать?

я имел ввиду делать запросы через обертку. В mysql(i) расширениях для проверки связи есть ping. В mssql расширении в коннекте есть аргумент отвечающий за повторный вызов коннекта
http://us1.php.net/manual/ru/function.mssql-connect.php
Цитата
new_link

If a second call is made to mssql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. This parameter modifies this behavior and makes mssql_connect() always open a new link, even if mssql_connect() was called before with the same parameters.

то есть можно сделать что то типа такого
function db_query($query) {
static $last_query_time;
$timeout = 30;

if($last_query_time && (time() - $last_query_time) > $timeout)
if(!mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi'))
return false;

$last_query_time = time();
return mssql_query($query);
}


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

Вообще это всё костыли конечно, правильнее было бы разобраться с настройками сервера, и задать нужный таймаут на соединение в MSSQL сервере.
Strannik
Цитата (sergeiss @ 28.03.2014 - 10:36)
Цитата (Strannik @ 28.03.2014 - 00:23)
Цитата (sergeiss @ 27.03.2014 - 21:25)

В эти 200 ГБ что входит: данные + какая-нибудь разметка или просто данные?

это объем таблиц с данными базы данных

Я когда этот вопрос задавал, имел ввиду "какой чистый объем данных". Потому что, как я понял, в эти 200ГБ входит всё: данные, индексы, всякие пустоты в файлах, содержащих таблицы....
И другой вопрос - это всё уникальные данные, которые входят в 200ГБ? Или там что-то дублируется из существовавшего ранее в БД?
Эти все вопросы к тому, что пытаюсь до конца понять всё структуру, может какие еще полезные мысли будут.

Сейчас задача твоя выглядит так: у клиента 3 раза в день появляется 200ГБ контента, который надо залить в БД, но БД не хочет принимать это всё. Говорит, "идите нафиг, таймаут". Поэтому и появляются мысли, что лучше задачу как-то изменить, чтобы найти рабочее решение.

нет-нет, ситуация иная - базу можно через менеджер залить с этим проблем нет. проблема извращенном алгоритме поиска, который загружает базу, т.е. к примеру сайт работает хорошо, а при поиске ответа от сервера по 1-2 минутам приходится ждать. А при поиске нескольких слов выскакивает таймаут.
Strannik
Цитата (killer8080 @ 28.03.2014 - 11:56)
Цитата (Strannik @ 27.03.2014 - 19:54)
Можете подробнее рассказать?

я имел ввиду делать запросы через обертку. В mysql(i) расширениях для проверки связи есть ping. В mssql расширении в коннекте есть аргумент отвечающий за повторный вызов коннекта
http://us1.php.net/manual/ru/function.mssql-connect.php
Цитата
new_link

If a second call is made to mssql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned. This parameter modifies this behavior and makes mssql_connect() always open a new link, even if mssql_connect() was called before with the same parameters.

то есть можно сделать что то типа такого
function db_query($query) {
static $last_query_time;
$timeout = 30;

if($last_query_time && (time() - $last_query_time) > $timeout)
if(!mssql_connect('KALLESPC\SQLEXPRESS', 'sa', 'phpfi'))
return false;

$last_query_time = time();
return mssql_query($query);
}


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

Вообще это всё костыли конечно, правильнее было бы разобраться с настройками сервера, и задать нужный таймаут на соединение в MSSQL сервере.

Добрый день.
Переписать на mssql_query проблемы не составит - работы максимум на час по всему конфигу пробежать.
Однако как правильно подмечено хотелось бы разобраться с сервером. Хоть на локалку поставить что ли проверить будут ли проблемы =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.