Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3]  Все   Вниз
  Печать  
Автор Тема: (del) ?–???‚?????µ ?‚?????????·?°  (Прочитано 128393 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #60 : 12-05-2004 10:03 » 

MOPO3, а чего молчишь Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #61 : 12-05-2004 13:52 » 

Гром, Да только приконектился, так на собрание вызвали Улыбаюсь А потом залазился я по инету в поисках инфы по моему вопросу Улыбаюсь А то никто не отвечает ничего, вот и ищу сам Улыбаюсь Уже ДДК поставил, теперь попытаюсь та понять что-нибудь  Ага
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #62 : 12-05-2004 16:40 » new

MOPO3, какой вопрос то - задал бы здесь - что случилось?
Записан

А птичку нашу прошу не обижать!!!
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #63 : 13-05-2004 04:40 » 

Дык в драйверах есть топик  Улыбаюсь зачем флуд разводить и ещё и тут печатать  Улыбаюсь  Да и не по теме сдесь  Улыбаюсь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #64 : 13-05-2004 05:29 » 

MOPO3, ага внимание не обратил - счас посмотрю...
Записан

А птичку нашу прошу не обижать!!!
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #65 : 24-05-2004 12:10 » 

Причины найдены!!!

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

А птичку нашу прошу не обижать!!!
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #66 : 24-05-2004 19:37 » 

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

Может кто посоветует кк теперь быть и что ставить взамен, или как оптимизировать.
Записан

А птичку нашу прошу не обижать!!!
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #67 : 25-05-2004 04:56 » 

Гром, насколько я знаю, то форум использует функцию mysql_pconnect() . Поэтому, в принципе, не должно открываться несколько коннектов даже при нескольких открытых окнах, по крайней мере пока не слетит сессия.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #68 : 25-05-2004 11:50 » 

mysql_pconnect() стоит рассматривать как пул открытых повторноиспользуемых соединений. Один копия (поток или процесс) запущенного скрипта использует одно соединение. Несколько потоков не могут использовать одно соединение одновременно. По какой логике они закрываются - не знаю, не проверял. Быстрее всего, их СУБД обрубает по таймауту.
Сам mysql_pconnect() не использую - не привычно. Предпочитаю надежный mysql_connect(). Как-то был случай: я поднял MySQL сервер и ограничил на 10 соединений, а товарищ мой написал скрипт на php с этими самыми pconnect-ами. Так они заняли все 10 возможных и не отключались - пришлось рестартнуть СУБД.
Цитата
Сервер разрешает по их данным 62 коннекта одновременно,...
Для всех, а не только для нас...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #69 : 25-05-2004 12:46 » 

RXL, я и сам не использую mysql_pconnect() . Один раз только помогло на большом проекте, а то админ ругался очень сильно  Жжешь
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #70 : 27-05-2004 06:34 » 

MOPO3, RXL, проблема не в самом форуме а в том самом topic_anywhere!!!

ЗАпросы на новые наши сообщения идут не только с нашего сайта но и с http://rusdoc.ru

У них 3-4 тышшы уникальных юзеров и куча загрузок страниц...
Буду просить его убрать вызов кода со всех страниц...
Однако у них все равно тормозит БД Жаль например сейчас на их сайте!!!
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #71 : 27-05-2004 06:55 » 

За что боролись, на то и напоролись...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #72 : 27-05-2004 06:58 » 

RXL, а по существу???
Я напишу их админу с просьбой убрать код с каждой страницы и оставить только на одной - и одну ссылку!
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #73 : 27-05-2004 07:10 » 

Гром, по существу - оптимизировать надо. Список последних сообщений не такая уж текучая вещь, чтобы выдавать ее на каждый запрос. Достаточно будет обновлять раз в минуту. Какая версия этого topic_anywhere стоит?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #74 : 27-05-2004 07:14 » 

1.7 версия...
У него там такой хитрющий запрос, счас посмотрю - могу ли я сам написать - по тому же принципу...
А раз в минуту не получится - крон не дадут чаще1 раз в 10 минут поднимать!

Там явно не по делу запрос вот такой!!!


SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time, f.forum_name FROM phpbb_topics t, phpbb_users u, phpbb_posts p, phpbb_posts p2, phpbb_users u2, phpbb_forums f WHERE t.topic_poster = u.user_id AND t.forum_id in (6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 26, 33, 34, 35, 37, 39, 40, 41, 42, 43, 44, 45) AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND t.forum_id = f.forum_id AND u2.user_id = p2.poster_id AND t.topic_type <> 2 AND t.topic_type <> 1 AND t.topic_status <> 1 AND t.topic_status <> 2 ORDER BY t.topic_type DESC, t.topic_last_post_id DESC LIMIT 20;
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #75 : 27-05-2004 07:42 » 

Гром, cron и не нужен. Принцип более простой: фиксируется время последнего обновления и при привышении генерится новая информация, иначе используется старая. Т.е. сложный и медленный запрос выполняется редко, а большинство запросов получают кешированную информацию.
Тонкость реализации тут в том, чтобы несколько потоков не взялись сразу за генерацию новой информации. Я думаю, что тут нужно две таблицы: одна для кешированной информации (можно и в файле хранить, но в таблице лучше) и одна для хранения даты обновления. Вот вторую таблицу нужно блокировать:
BLOCK TABLES table WRITE;
SELECT dt FROM table;
UPDATE table SET dt=NOW() WHERE dt<'минуту назад';
UNLOCK TABLES;
Сработает это быстро.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #76 : 27-05-2004 20:15 » 

Вот анализ "штатного" запроса к базе:
Код:
+-------+--------+-------------------+---------+---------+-----------------------+------+---------------------------------------------+
| table | type   | possible_keys     | key     | key_len | ref                   | rows | Extra                                       |
+-------+--------+-------------------+---------+---------+-----------------------+------+---------------------------------------------+

| t     | ALL    | forum_id          | NULL    |    NULL | NULL                  |    7 | where used; Using temporary; Using filesort |
| u     | ALL    | PRIMARY           | NULL    |    NULL | NULL                  |    4 | where used                                  |
| p     | eq_ref | PRIMARY           | PRIMARY |       3 | t.topic_first_post_id |    1 |                                             |
| p2    | eq_ref | PRIMARY,poster_id | PRIMARY |       3 | t.topic_last_post_id  |    1 |                                             |
| u2    | eq_ref | PRIMARY           | PRIMARY |       3 | p2.poster_id          |    1 |                                             |
| f     | eq_ref | PRIMARY           | PRIMARY |       2 | t.forum_id            |    1 |                                             |
+-------+--------+-------------------+---------+---------+-----------------------+------+---------------------------------------------+

Столбец "rows" здесь ни чего интересного не показывает - база у меня почти пустая.
За то видно, что крупная таблица phpbb_topics (здесь под псевдонимом t) читается и сортируется целиком. Чем больше она становится, тем медленне работает.

Попробовал заменить на LEFT JOIN:
Код:
SELECT t.*, u.username, u.user_id, u2.username as user2, u2.user_id as id2, p.post_username, p2.post_username AS post_username2, p2.post_time, f.forum_name
 FROM phpbb_topics t
  LEFT JOIN phpbb_users u ON t.topic_poster = u.user_id
  LEFT JOIN phpbb_posts p ON p.post_id = t.topic_first_post_id
  LEFT JOIN phpbb_posts p2 ON p2.post_id = t.topic_last_post_id
  LEFT JOIN phpbb_users u2 ON u2.user_id = p2.poster_id
  LEFT JOIN phpbb_forums f ON t.forum_id = f.forum_id
 WHERE
  t.forum_id in )6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 26, 33, 34, 35, 37, 39, 40, 41, 42, 43, 44, 45:
  AND t.topic_type <> 2
  AND t.topic_type <> 1
  AND t.topic_status <> 1
  AND t.topic_status <> 2
 ORDER BY t.topic_type DESC, t.topic_last_post_id DESC
 LIMIT 20;

Получилась некоторая оптимизация:
Код:
+-------+--------+---------------+---------+---------+-----------------------+------+----------------------------+
| table | type   | possible_keys | key     | key_len | ref                   | rows | Extra                      |
+-------+--------+---------------+---------+---------+-----------------------+------+----------------------------+
| t     | ALL    | forum_id      | NULL    |    NULL | NULL                  |    7 | where used; Using filesort |
| u     | eq_ref | PRIMARY       | PRIMARY |       3 | t.topic_poster        |    1 |                            |
| p     | eq_ref | PRIMARY       | PRIMARY |       3 | t.topic_first_post_id |    1 |                            |
| p2    | eq_ref | PRIMARY       | PRIMARY |       3 | t.topic_last_post_id  |    1 |                            |
| u2    | eq_ref | PRIMARY       | PRIMARY |       3 | p2.poster_id          |    1 |                            |
| f     | eq_ref | PRIMARY       | PRIMARY |       2 | t.forum_id            |    1 |                            |
+-------+--------+---------------+---------+---------+-----------------------+------+----------------------------+

Проверить бы на большой базе -  у меня в тестовой всего 4 пользователя, 4 форума, 7 тем и 15 постов.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #77 : 27-05-2004 20:43 » 

RXL, какой тебя доступ нужен пиши - дам проверить на реальной базе форума....
admin@shelek.com
Записан

А птичку нашу прошу не обижать!!!
Страниц: 1 2 [3]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines