Нет? Тогда пришло время вступить в ряды бойцов Cisco
Саша aka mr.Scamp @scamp
DevOps
Обслуживание тысяч запросов в секунду на примере XBT Tracker
5 мин
8KНедавно проводили тест, результаты которого показали, что одно приложение обрабатывает 2000 запросов в секунду на скромном сервере, где это было не единственной нагрузкой. При этом результат каждого запроса записывается в 3-5 таблиц в MySQL. Честно говоря, меня такой результат удивил, поэтому решил поделиться с хабрасообществом описанием архитектуры этого приложения. Подобный подход применим от баннерных показов до чатов и микроблогов, надеюсь кому-нибудь покажется интересным.
Во-первых, это приложение однопоточное. Всё делается одним процессом, работа с сокетами — неблокирующими epoll/select, никаких ожидающих ввода/вывода потоков (threads). С развитием HTTP, сначала появлением Keep-Alive, затем AJAX и набирающим популярность COMET, количество постоянных соединений с веб-сервером растёт, на нагруженных проектах измеряется тысячами и даже десятками тысяч, и если для каждого создавать свой поток (thread) со своим стеком и постоянно переключаться между ними — ресурсов сервера очень быстро не хватит.
Второй ключевой момент — что один SELECT… WHERE pk in (k1, k2, ..., kN) выполняется быстрее, чем несколько SELECT… WHERE pk=… Выполняя работу с базой данных большими пачками можно уменьшить не только число запросов в секунду, но и общую нагрузку.
Во-первых, это приложение однопоточное. Всё делается одним процессом, работа с сокетами — неблокирующими epoll/select, никаких ожидающих ввода/вывода потоков (threads). С развитием HTTP, сначала появлением Keep-Alive, затем AJAX и набирающим популярность COMET, количество постоянных соединений с веб-сервером растёт, на нагруженных проектах измеряется тысячами и даже десятками тысяч, и если для каждого создавать свой поток (thread) со своим стеком и постоянно переключаться между ними — ресурсов сервера очень быстро не хватит.
Второй ключевой момент — что один SELECT… WHERE pk in (k1, k2, ..., kN) выполняется быстрее, чем несколько SELECT… WHERE pk=… Выполняя работу с базой данных большими пачками можно уменьшить не только число запросов в секунду, но и общую нагрузку.
+65
Как установить Debian Linux с USB flash
3 мин
202KВ этой статье вы узнаете, как создать USB flash диск, с которого можно будет установить Debian Linux.
Здесь я расскажу, как подготовить загрузочную USB флешку с Debian Lenny и установить с неё Debian на любой накопитель (IDE/USB HDD). Заметьте, что в этой статье описывается не то, как установить Debian на USB диск/флешку, а то, как создать «Инсталляционный USB диск». То есть результатом станет то, что вы сможете установить Debian Lenny с USB накопителя, вместо традиционного CD-ROM.
Существует несколько путей установки Debian Lenny:
Введение
Здесь я расскажу, как подготовить загрузочную USB флешку с Debian Lenny и установить с неё Debian на любой накопитель (IDE/USB HDD). Заметьте, что в этой статье описывается не то, как установить Debian на USB диск/флешку, а то, как создать «Инсталляционный USB диск». То есть результатом станет то, что вы сможете установить Debian Lenny с USB накопителя, вместо традиционного CD-ROM.
Существует несколько путей установки Debian Lenny:
+22
MySQL: Хранимые процедуры и динамический SQL
1 мин
51KЕсли кто-либо из вас пытался сделать вроде бы очевидную вещь, а именно, создать sql запрос внутри процедуры передав ей имя таблицы, пользователя и т.п., то скорее всего натыкались на ошибку, о том, что нельзя использовать динамический sql.
Такая конструкция работать не будет. А что же делать, чтобы она заработала?
SET @mytable='users';
SELECT * FROM @mytable;
Такая конструкция работать не будет. А что же делать, чтобы она заработала?
+61
Cisco: Пути сертификации неисповедимы
3 мин
39KСвою первую статью я решил написать о том, о чем невольно задумывается каждый начинающий инженер Cisco: о Зарплате. Шучу, конечно о самообучении и Сертификации.
+45
VPN, полное покрытие
5 мин
31KПредставьте, ваша компания набирает обороты, растут продажи, происходит открытие множества филиалов, и эти филиалы активно работают друг с другом. А это значит что вам нужно все их друг с другом связать! В качестве оборудования у нас маршрутизаторы Cisco, что впрочем отменяет только конечные примеры настроек, если у вас Cisco нет, я находил в сети проект OpenNHRP.
Итак, начнем. Для начала свяжем центр с первым филиалом с использованием IPSEC.
Итак, начнем. Для начала свяжем центр с первым филиалом с использованием IPSEC.
+27
Избавляемся от дополнительных настроек jabber-клиента в Google apps
2 мин
7KСудя по количеству плюсов к посту про использование google apps в качестве сервера jabber эта тема волнует хабрапользователей. Поэтому я решил внести свои пять копеек.
В документации гугла сказано, что при настройке кастомного клиента нужно вводить в свойствах соединения сервер talk.google.com и порт. Это очень не удобно, так как надо всё время помнить эти настройки, да и затрудняет настройку клиента вашими родственниками/знакомыми, которых пугает только одно слово порт :) Почему-то в документации к google apps этого не сказано, но прописать адрес и порт, которые должны быть использовать при подключении, можно в srv записях dns, да именно там, где вы указаывали адреса для федеративных сетей.
Добавляем запись типа:
И вауля, клиент коннектится безо всяких танцев и дополнительных настроек.
В документации гугла сказано, что при настройке кастомного клиента нужно вводить в свойствах соединения сервер talk.google.com и порт. Это очень не удобно, так как надо всё время помнить эти настройки, да и затрудняет настройку клиента вашими родственниками/знакомыми, которых пугает только одно слово порт :) Почему-то в документации к google apps этого не сказано, но прописать адрес и порт, которые должны быть использовать при подключении, можно в srv записях dns, да именно там, где вы указаывали адреса для федеративных сетей.
Добавляем запись типа:
_xmpp-client._tcp.yourdomain.com. IN SRV 5 0 5222 talk.google.com.
И вауля, клиент коннектится безо всяких танцев и дополнительных настроек.
+47
Атаки на беспроводные сети. Часть 2
3 мин
20KЭто продолжение предыдущей статьи, об атаках на беспроводные точки доступа с WEP-защитой.
Во второй части цикла статей о безопасности беспроводных сетей мы рассмотрим некоторые нетрадиционные атаки на WEP.
Во второй части цикла статей о безопасности беспроводных сетей мы рассмотрим некоторые нетрадиционные атаки на WEP.
+48
ICQ-маскарад как универсальное решение проблем с изменениями протокола ICQ
2 мин
1.4KЭто мой первый пост на хабре, поэтому любые пожелания к стилю написания приветствуются.
В связи с периодическими изменениями протокола ICQ, не все сторонние клиенты успевают за ними, поэтому появилась необходимость в прослойке между сервером и клиентом, которую можно достаточно быстро подстраивать.
В данной статье я расскажу об реализации такой прослойки, в виде специализированного прокси — ICQGATE или ICQ-маскарад.
В связи с периодическими изменениями протокола ICQ, не все сторонние клиенты успевают за ними, поэтому появилась необходимость в прослойке между сервером и клиентом, которую можно достаточно быстро подстраивать.
В данной статье я расскажу об реализации такой прослойки, в виде специализированного прокси — ICQGATE или ICQ-маскарад.
+61
Атаки на беспроводные сети. Часть 1
5 мин
69KВ прошлой статье о беспроводных сетях мы рассмотрели первый этап — сбор информации, или wardriving. Сейчас же, продемонстрируем несколько способов получения несанкционированного доступа к беспроводным сетям, а также рекомендации по защите от них.
+113
Восстановление базы MySQL из бинарных логов
2 мин
43KБазы данных иногда пропадают. Человеческий фактор и всё-такое… Если вы не делали бекапов (а надо бы) или они уже устарели, не отчаивайтесь, — есть ещё возможность восстановить утерянную информацию.
+55
Три первых шага к оптимизации LAMP
2 мин
5.4KБытует мнение, что связка LAMP (Linux+Apache+Mysql+PHP) не требует особой настройки и работает «из коробки». Это далеко не так. После того, как я долго убеждал товарища установить кеширующий акселератор PHP xcache, я решил провести небольшой эксперимент и попробовать выключить xcache на своём виртуальном сервере, находящемся под небольшой нагрузкой (около хита в секунду). В реальной жизни нагрузка на процессор мала, а вот память загружена сильно, т.к. её немного (256МБайт).
Результаты эксперимента превзошли все ожидания.
Результаты эксперимента превзошли все ожидания.
+50
Как зарегистрировать домен бесплатно
2 мин
149KНа удивление оказывается, что многие незнают о существовании зон, свободных для регистрации. Более того, многие платят за регистрацию доменов в этой зоне деньги — стандартная цена у известных регистраторов от 5 до 15 у.е. за то, что можно сделать самому бесплатно.
Вот какие домены можно зарегистрировать абсолютно бесплатно:
Украина
.net.ua, .od.ua, .org.ua, и множество вида регион.ua
Россия
.com.ru, .net.ru, org.ru, pp.ru, .msk.ru, spb.ru и множество остальных типа регион.ru
Ниже инструкция типа «домен бесплатно для чайников»
+197
Воспроизведение 3GP «для чайников»
1 мин
5.8KПо умолчанию, в дистрибутиве Ubuntu Linux нет возможности просмотреть файл 3gp со звуком.
Например, MPlayer проигрывает формат 3gp, но без звука, выдавая лишь предупреждение: «Cannot find codec for audio format 0x726D6173».
Проблема в библиотеках AMR. Опытные пользователи знают, что поиск в Google по ключевым словам «ubuntu+3gp+sound» даст ссылки на решения, опубликованные на Ubuntu Forums, суть которых заключается в пересборке FFmpeg и проигрывателя MPlayer с поддержкой AMR.
Однако, есть более простой способ.
Например, MPlayer проигрывает формат 3gp, но без звука, выдавая лишь предупреждение: «Cannot find codec for audio format 0x726D6173».
Проблема в библиотеках AMR. Опытные пользователи знают, что поиск в Google по ключевым словам «ubuntu+3gp+sound» даст ссылки на решения, опубликованные на Ubuntu Forums, суть которых заключается в пересборке FFmpeg и проигрывателя MPlayer с поддержкой AMR.
Однако, есть более простой способ.
+16
Собственный сервер Git на базе Ubuntu или Debian/GNU Linux
2 мин
81KЯ встречал в сети много tutorial'ов по установке своего сервера git как на gitweb, так и на webdav, но, увы, они либо были только по одному из вышеназванных пунктов, не освещая другой, либо банально не работали. Вчера возникла необходимость поднять свой сервер репозиториев. Потратил пару часов — поднял, теперь хочу поделиться опытом, потому что считаю проблему актуальной :)
+33
Владельцам нетбуков посвящается: Unetbootin
1 мин
5.4KПрограмма уже упоминалась на Хабре в блоге OpenSource
Unetbootin (http://unetbootin.sourceforge.net/) позволяет создать загрузочную USB-флешку из практически любого дистрибутива Linux/BSD. Впрочем, можно создать и загрузочный жесткий диск.
Существуют версии как для Linux, так и для Windows.
Работать просто до неприличия:
Выбрали источник → Выбрали загрузочное устройство → Нажали OK.
При этом в качестве источника можно выбрать дистрибутив и версию, программа сама скачает нужное. Можно выбрать ISO, а можно указать ядро и initrd руками с нужными опциями.
Окошко:
PS. Поддерживается даже только что вышедшая Ubuntu 8.10.
Unetbootin (http://unetbootin.sourceforge.net/) позволяет создать загрузочную USB-флешку из практически любого дистрибутива Linux/BSD. Впрочем, можно создать и загрузочный жесткий диск.
Существуют версии как для Linux, так и для Windows.
Работать просто до неприличия:
Выбрали источник → Выбрали загрузочное устройство → Нажали OK.
При этом в качестве источника можно выбрать дистрибутив и версию, программа сама скачает нужное. Можно выбрать ISO, а можно указать ядро и initrd руками с нужными опциями.
Окошко:
PS. Поддерживается даже только что вышедшая Ubuntu 8.10.
+31
Cisco. Второй выпуск. Используем Packet Tracer 5.0 для моделирования сети. Скринкаст.
2 мин
28KСегодня в выпуске:
Packet Tracer 5. Изучаем возможности программы.
Выпуск выполнен в виде скринкаста.
За 20 минут вы познакомитесь с основными функциями PT5.
На повестке дня:
+24
Оптимизация MySQL запросов
4 мин
125KВ повседневной работе приходится сталкиваться с довольно однотипными ошибками при написании запросов.
В этой статье хотелось бы привести примеры того, как НЕ надо писать запросы.
В этой статье хотелось бы привести примеры того, как НЕ надо писать запросы.
+121
Неприятная особенность Ubuntu Linux для системных администраторов
1 мин
9.4KПроводя реорганизацию дискового пространства для хранения информации на производственном сервере, работающем под управлением Ubuntu Linux, открылась очень интересная особенность: директория /var/run обязательно должна быть на корневой файловой системе!
Я собрал RAID-массив, перенес на него /var и вписал точку монтирования. При загрузке системы начали наблюдаться очень странные вещи: большая часть демонов автоматически перестала загружаться при старте, не запускается сеть (не создается /var/run/network) и подобные аномалии. При этом просмотр журналов ничего конкретного не дает.
Решение: создать на корневой ФС (/) каталоги /var/run (root:root, drwxr-xr-x) и /var/lock (root:root, drwxrwxrwt), что даст нормальный запуск, а сразу после старта /var, расположенный на массиве, будет корректно включен в систему.
Я собрал RAID-массив, перенес на него /var и вписал точку монтирования. При загрузке системы начали наблюдаться очень странные вещи: большая часть демонов автоматически перестала загружаться при старте, не запускается сеть (не создается /var/run/network) и подобные аномалии. При этом просмотр журналов ничего конкретного не дает.
Решение: создать на корневой ФС (/) каталоги /var/run (root:root, drwxr-xr-x) и /var/lock (root:root, drwxrwxrwt), что даст нормальный запуск, а сразу после старта /var, расположенный на массиве, будет корректно включен в систему.
+24
Кэширование и memcached
7 мин
84KЭтим постом хочу открыть небольшую серию постов по материалам доклада на HighLoad++-2008. Впоследствии весь текст будет опубликован в виде одной большой PDF-ки.
Введение
Для начала, о названии серии постов: посты будут и о кэшировании в Web’е (в высоконагруженных Web-проектах), и о применении memcached для кэширования, и о других применениях memcached в Web-проектах. То есть все три составляющие названия в различных комбинациях будут освещены в этой серии постов.
+74
Информация
- В рейтинге
- Не участвует
- Откуда
- Львов, Львовская обл., Украина
- Дата рождения
- Зарегистрирован
- Активность