|
updated 05.08.09 14:27 05.08.09 14:00 |
Света Темникова | |
ru |
«[ 0.000000] BIOS EBDA/lowmem at: 0009f800/0009f800
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 2.8.16-11-generic (dustman@combats) (gcc version 4.6.3 (Ubuntu 4.6.3-5ubuntu4) ) #42-Ubuntu SMP Fri Apr 11 01:57:59 UTC 2011»
Его компьютер зажужжал.
Rand [12] вздохнул и подпер голову рукой. Второй рукой он постукивал по столу, и в нетерпении, играл шлепанцем, висящем на большом пальце ноги.
Наконец компьютер загрузился; Maxthon через wine, логин/пароль.
- Время форума, такст, - на выдохе произнес гвардеец.
Форум давно не был его любимым местом. Если сказать по-честному, то он никогда не был его любимым местом. Однако когда на форуме были лишь только люди, было приятно помогать им. Порой они отвечали благодарностью. Но с того момента, как за екры разрешили использовать программы для прокачки и общения персонажа на форуме, стало неинтересно. А после того, как ввели звездочки за количество сообщений, так и вообще, аврал.
Общая.
СЧАСТЬЕ ПОЭТА 123 вертолеты [11]
13.06.11 19:51 Это письмо счастья поэтов обошло мир двадцать один раз за один год. Отправь его всем своим друзьям…
Ответов: 50 ... Terrex, Вильфор, Black Falkon, Black Falkon, Еуттуч, Terrex, Terrex, Black Falkon, mastiff-nn, mastiff-nn
Гвардеец вздохнул.
Rand [10] (14.06.11 09:52): Про поэтов только в разделе Творчество.
Внимание! мона луиСса [8]
13.06.11 23:18 Самые горячие азиаточки только у нас…
Ответов: 3 Sprut, Награда, Mephiston
- Ты посмотри на них. Говорил же только в «Рекламе».
Модераторы уже не помогали. Сначала они утонули в междоусобных войнах с самими собой…
Rand задумался. Ему вспомнились события начала 2010 года, когда начался второй Крестопад, запланированный и кровавый. В 2009 Верховный Паладин мог поставить структуру на ноги, мог отнять у тарманов земли, мог навести порядок, но не стал этого делать. Структура медленно и верно скатывалась в липкое болото, в котором редкие ещё способные работать персонажи растрачивали свою энергию на козни друг против друга и попыток выбраться из болота на пьедестал, чего не произошло, конечно.
Тарманы нашли другой путь развития структуры. Теперь по приходу тарман получал кредит на несколько тысяч кредов, который в будущем по процентно снимался за отличную работу. Надо сказать, что отлично работали единицы, и поэтому армия дрессированных бойцов множилась и процветала. Когда эта ситуация достигла апогеи, Мусорщик закрыл Орден, предоставив все города Армаде. Именно в это время доживал свой век последний светлый клан. В его рядах осталось семь бойцов. Играли только трое. Остальные пара сотен давно были сломлены, или просто плюнули, предав склонность, или покинув проект. Вскоре поступило настойчивое предложение дать им бессрочный Хаос, которым модераторам просто нельзя было не воспользоваться.
Артников убрали сами, ведь доход от них единичный, а сколько потом проблем и пафоса.
И вот как раз к концу 2010 года Бойцовский Клуб стал заселять средний класс темных бойцов. Для того, чтоб играть в БК, нужно было заплатить символическую абон.плату – 1 екр в месяц.
Пыщ-пыщ 123 конфетка Аленка [9]
14.06.11 08:34 кто атправит мне симпаффку, пацалую в носик, маи пташечки. Ололо…
Ответов: 27 ... CEG, CEG, Злобный Тип, lemeserg, Троешник, XOXOT, SHEF DE LUP, Северный мишка, Крестег, Твой Ангел
О да, «симпачки». Новая услуга нашей Соц.сети. Для того, чтоб отослать Симпачку своему другу, достаточно иметь 2 екр на счете. В конце каждого месяца происходит подсчет всех симпачек, и тот, у кого их больше, получает в инфу значек, например «Симпачка, июль 2011».
Гвардеец вздохнул и отхлебнул горячего чая. Сегодняшний день был особенным для него. Это последний день в этой должности. Недавно ему предложили перейти, став главой Ордена Стихий. Ведь после введения за екры свитка «Отправить гвардейца на ВЦ», он уже не хотел работать на этом месте.
Часы пробили десять утра, форум начинал оживать. Его сонные обитатели ждали замков и луков, которые должны были завести именно в этот понедельник….
http://sandcity.combats.com/forum.pl?id=1249467817&n=index
Mood: светлое ![](http://img.combats.com/i/smile/pal.gif)
|
Comments: 28 | |
|
|
|
updated 04.08.09 23:41 04.08.09 23:20 |
Пересмешник | Архангелы стихий. |
ru |
Элементал - существо принадлежащее к одной из стихий. Могут быть добрыми лукавыми и злыми.
Ундина (русалка) - дух-элементал Воды.
Саламандра- дух-элементал Огня.
Mood: Пересмешливое Music: Jessica Jay - Casablanca
|
Comments: 137 | |
|
|
|
updated 07.02.10 02:45 04.08.09 23:15 |
Куруфин | Небольшой слив инфы. Ждем-с. ;) |
ru |
|
Comments: 15 | |
|
|
|
04.08.09 01:58 |
Света Темникова | |
ru |
http://sandcity.combats.com/forum.pl?id=1249331756&n=index
для себя
|
|
|
|
|
updated 03.08.09 22:39 03.08.09 22:38 |
Лизка | Все каллории - в сиськи! (с) |
ru |
Помните такое выражение?:)
Я заметила, что если дать себе такую установку - так и будет! На ровном месте - без ощутимого увеличения веса (+/-0,5 кг) - "сиськи" увеличились на полразмера!))) Мысль - материальна, воистину:)
Mood: хитрое ![](http://img.combats.com/i/smile/dance1.gif) Music: Real O - Я Бы...
|
Comments: 64 | |
|
|
|
03.08.09 21:21 |
Лизка | Пора в школу:) |
ru |
Персонажу "Лизка" 7 лет:) Случайно зашла и вспомнила. Такие дела:)
Mood: сонное ![](http://img.combats.com/i/smile/sneeze.gif) Music: Мика Ньютон - Выше Чем Любовь
|
Comments: 21 | |
|
|
|
updated 02.08.09 19:00 02.08.09 18:10 |
kirillica | MySQL: MyISAM vs InnoDB vs MEMORY |
ru |
Те, кто играют в Двар, знают, что на сайте у тамошних Мерков есть мега-ресурс - рейтинг игроков. "Мега" он и по посещаемости, и по экспонентальным формулам рассчета очков рейтинга. Когда появилась первая версия ресурса, в базе было коло 30000 игроков. Исторические сложилось, что движки обоих таблиц, используемых в рейтинге - MyISAM. Вроде бы, "родной" движок от самих разработчиков MySQL, да и (с такими-то объемами) все работало "на ура". Тем более, что MyISAM позиционируется MySQL как лучший для OLAP (On-line Analyze Processing).
Но время идет, рейтинг дополняется новыми категориями, количество игроков в базе растет, и вот теперь это уже более 180 000 записей и более 500 select/insert/update/delete'ов по первичному ключу в минуту. И это без того самого пресловутого OLAP, который (в нашем случае) и есть выдача рейтинга по заданным пользователем критериям. Путем экспериментов, нашел комбинацию запросов, которые позволяю сделать это максимально быстро:
1) SELECT count(*) FROM <tables> WHERE <user filter> - дабы узнать, сколько же пользователей удовлетворяет фильтру
2) SELECT <data> FROM <tables> WHERE <user filter> LIMIT <page> - непосредственно страница рейтинга
3) SELECT count(*) FROM <tables> WHERE rating > <data entry rating> UNION ... - запрос UNION с для определения позиции каждого игрока на странице (это нужно потому, как сортировки бывают не только по рейтингу, поэтому лучший в одной категории может быть худшим в общем зачете, что и надо бы отразить его местом). Т.е. 3 запроса на каждую отображаемую страницу.
Все работает более-менее, пока пользователь захочет посмотреть не первую страницу, а, скажем 3001-ую. Что важно: на каждое поле, на которое может быть наложена сортировка и/или поиск - стоит индекс. Выходит, 12-20 секунд (в зависимости от загруженности сервера) - это предел производительности. Более того, фактически все это время таблицы залочены, а это значит, что остальные запросы ждут, пока выполнятся эти, при этом количество тредов в статусе Waiting резко возрастает. Быстрее MyISAM просто не может (железо хорошее, под базу выдано прилично ресурсов). А что сделает пользователь, когда он пару раз подождет? Правильно, среднестатистический серфер предпочтет вообще больше не ждать. Значит, надо что-то делать.
Иду в гугл, думаю. Ага, InnoDB - чуть-чуть хуже для OLAP (вроде как), но заметно лучше при таком количестве транзакций. И написано красиво: поменяйте движок через ALTER TABLE <table> ENGINE = InnoDB; - и будет вам счастье. Смотрю на загрузку сервера. Вроде, никого нет (времени - первый час ночи), тестирую производительность по транзакциям на локальной машине - действительно лучше. где-то на 10%. Запускаю. Ага... На 15ой минуте мне больше ничего не оставалось, как убить процесс. Сервер встал, загрузка выросла с 0.7 до 2.5, количество процессов в очереди поражает воображение. Но вот что интересно: KILL <process id> в MySQL процесс-то убило, он перешел в статус End, но сервер "не отпустило" и локи с таблиц не сняло. подождал пару минут и сделал в консоли "красивый" стоп-старт: /etc/init.d/mysqld stop. И что вы думали? Не останавливается. Говорит, failed - и все. Остается крайняя мера - kill -9 <pid>. Убился. Поднялся. Думаю дальше.
Делаю новый скрипт: создаю еще одну табличку, но уже с правильным движком, запускаю INSERT INTO ... SELECT * FROM - и жду. На этот раз 11 минут. И 10 минут на OPTIMIZE (на всякий случай), ибо "вес" таблицы вырос с 130 до 160 мегабайт. Последнее не помогло. Добавляю ссылку одной таблицы на другую, что бы совсем красиво и совсем как в крутых RDBMS (Relational DataBase Management System): CONSTRAINT FOREIGN KEY. Проверяю активно вывод рейтинга. И расстраиваюсь в конец. Предыдущие 12 секунд стали 2 минутами 12 секундами. Ладно, думаю, индексы не пересчитал (на сайте произовидтеля пишут, что такая бага иногда бывает, хотя... чего это он делал там 11 минут?). Делаю DROP ... CREATE INDEX... , как умные люди советуют. Не помогает. В шоке. Называется, починил рейтинг. Зато обычные транзакции просто летают.
И тут меня осенило. Памяти на сервере дофига, а что, если сделать систему с двумя таблицами на базе InnoDB и MEMORY. Т.е. для вывода рейтинга просто запихнуть все в HEAP, т.е. в память. В свое время ребята из Oracle рассказывали, что так их клиенты решают свои проблемы с производительностью. Остается надеется, что ребята из MySQL, т.е. из Sun Microsystems, т.е. из IBM, который, в свою очередь, выпускает мало кому нужную, но по слухам крутую DB2, ничуть не хуже.
Читаю мануал, интересные вещи пишут. В MySQL (по умолчанию) данный движок юзают для небольших таблиц, записи в которых не очень-то и важны. Например, список сессий. Если сервер перезапусткается/умирает - данные пропадают, но структура остается. Но мне так и так раз в 10 минут надо перезаписывать данные там, так что подходит. Эту задачу решим с помощью crontab. А что делать с объемом данных? Ага, пишут: измените в системных настройках max_heap_table_size - и солнышко засветит даже в полтретьего ночи. Увеличиваю, создаю структуру таблицы (внимание, MEMORY поддерживает HASH-индексы, но их надо определять вручную через USING HASH, поэтому тупо копировать структуру для лучшей скорости просто глупо. об этом, кстати, пишут вообще где-то в темных уголках мелкими буквами. это, кстати, первые грабли, которые надо знать).
Копирую через INSERT INTO ... SELECT * FROM - через 4 секунды "вылетает" с ошибкой, что Table is full. При этом копируется где-то 40000 записей. Офигеть. Учитывая, что я выдал один гигабайт под это безобразие - он утверждает, что все, нету места. Смотю размер таблицы - данным объемом даже и не пахнет. Оказывается, что, создавая структуру, надо еще и "намекнуть", сколько записей вы бы хотели в нее положить. Через MAX_ROWS.
Пересоздаю структуру, ставлю 1000000 строчек (чтоб уж наверняка), запускаю копирование данных... Мистика - 5 секунд. Да, за 5 секунд создается таблица в памяти размером в 110 мегабайт со всеми нужными индексами. Тестирую рейтинг - по 1-2 секунды на страницу, независимо от того, первая она или где-то в серединке. Дело за малым - написать скрипт, разделяющий и обновляющий данные. Собственно, тут все казалось совсем тривиальным: DELETE FROM ... ; INSERT INTO ... SELECT * FROM. (TRUNCATE средствами PHP не поддержвиается) Написал, протестировал. Вроде, работает. Запустил сервисы сайта в полном объеме.
Почти ушел спать, глянул краем глаза - и снова расстроился. Поскольку фактическое первое, что было написано для сайта - это логер всех запросов с ошибкой, там творились страшные вещи: Deadlock. Т.е. транзакции, которые приходились на момент копирования, блокировались копированием и, не захотев ждать, отваливались. При этом само копирование тоже "падало", независомо от того, в какой момент приходилась транзакция. Значит, надо все копирование "запихнуть" в одну транзакцию, предварительно мануально проставив локи. Дополняю скрипт в начале: SET autocommit = 0; START TRANSACTION; LOCK TABLES <source> READ, <destination> WRITE; и в конце ставлю COMMIT; SET autocommit = 1;. Но не тут-то было. Если DELETE находится внутри LOCK - скрипт "падает" из-за того, что ему резко не хватает памяти. Я даже представить не могу, как связан LOCK и DELETE, но, если поставить DELETE до LOCK - все работает без ошибок, не загружая сервер и память.
И пока, хвала Всевышнему, уже 13 часов работает без сбоев. Что интересно, загрузка сервера от сортировки и содержания двух таблиц в MEMORY меньше, чем без них средствами MyISAM/InnoDB. Необъяснимо, но факт.
Вот такой вот забавный секс до 4ех утра. :))
|
|
|
|
Total posts: 8491 Pages: 850
1.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 100.. 110.. 120.. 129 130 131 132 133 134 135 136 137 138 139 140.. 150.. 160.. 170.. 180.. 190.. 200.. 210.. 220.. 230.. 240.. 250.. 260.. 270.. 280.. 290.. 300.. 310.. 320.. 330.. 340.. 350.. 360.. 370.. 380.. 390.. 400.. 410.. 420.. 430.. 440.. 450.. 460.. 470.. 480.. 490.. 500.. 510.. 520.. 530.. 540.. 550.. 560.. 570.. 580.. 590.. 600.. 610.. 620.. 630.. 640.. 650.. 660.. 670.. 680.. 690.. 700.. 710.. 720.. 730.. 740.. 750.. 760.. 770.. 780.. 790.. 800.. 810.. 820.. 830.. 840.. 850
|
|
Mo |
Tu |
We |
Th |
Fr |
Sa |
Su |
| | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | | |
|