Skip to content


Чем смотреть производительность в linux

Софт для мониторинга производительности

Чем мониторить различные подсистемы сервера в linux

Вот еще более свежая версия:

От Brendan Gregg. http://brendangregg.com/Perf/linux_perf_tools_full.png

Posted in Misc.


Нескучные вопросы для IT-собседования

  • Вы ранее привлекались за хранение данных в глобальных переменных?
  • Какой результат выполнения команды git push me and then just touch me till I can get my satisfaction, satisfaction?
  • Найдите точку G бинарным поиском.
  • Назовите свою любимую позу для стендап митинга.
  • Вы когда-нибудь делали .Net за деньги?
  • Сформулируйте зависимость времени исправления критического бага от seniority присутствующего менеджера.
  • В своём резюме вы указали знание php. Вам не стыдно?
  • Есть таблицы customer_id, product_name, purchase_date и набор css правил. Нарисуйте идеальный круг используя только тэг <table>
  • Вы способны довести девушку до оргазма языком программирования?
  • Полиморфизм, конкатенация, многопоточность... продолжите логическую цепочку.
  • Почему люк скайуокер круглый?
  • Какой из циклов быстрее, for, while или правило буравчика?
  • Обоснуйте полноту Javascript по Тьюрингу с позиций фрейдистской школы программирования.
  • Перед вами кисть, холст и мольберт. Напишите компилятор.
  • Расскажите что-нибудь про Pascal.
  • Расскажите о плюсах и минусах автокомплита в сексе.
  • Как часто Вы отбирали sudo на продакшене у разработчика? Через сколько, в среднем, Вы выдаёте его снова?
  • Как часто вы говорите своему коду "ну пожалуйста.."?
  • Перестаньте краснеть и хихикать! Повторяем вопрос: "Вы когда-нибудь ранее использовали LaTeX?"
  • У кого был самый длинный код в вашей прошлой команде?
  • Вы моете руки перед правкой кода на продакшне?
  • Что вызывает у вас бóльшую улыбку: "I have read and agree to the terms and conditions" или подпись под соглашением о неразглашении?
  • В резюме указано, что ваша последняя должность — delivery manager... вы пиццу что ли разносили?
  • А вы в planning poker как предпочитаете играть — на деньги или на раздевание?
  • Насколько сильно у вас развит дар велосипедостроения?
  • Вас раньше обвиняли в попытках программировования?
  • Заступая в должность разработчика, готовы ли вы дать присягу на книге Боба Мартина "Чистый код"?
  • Ну признайтесь уже — джаваскрипт алертами дебажили?
  • Можете ли вы провести аналогию между работой на пятилетнем проекте и проктологией?
  • Что, по-вашему мнению, более эффективно: скопипастить код из примеров или убедить заказчика, что ему не нужна эта фича?
  • push --force, checkout — а какие еще способы разрешения конфликтов вы знаете?
  • Если честно, то нас немного смущает тот факт, что вы искали работу программиста через биржу труда...
  • Согласны ли вы что каждый девелопер должен посадить зрение, построить велосипед и вырастить репозиторий?
  • В своем резюме вы указали, что хотели бы поработать на интересном проекте... Вы этот проект с собой принесли?
  • Правда ли, что смесь php, css, js, html и sql в одном файле имеет слабительный эффект?
  • А есть примеры ваших работ не на перфокартах?
  • Найдите оптимальное решение данной задачи не более чем за 3 запроса в гугл.
  • Согласны ли вы, что у админа должна быть борода, даже если админ — женщина?
  • Скажите, вы когда-нибудь симулировали ООП?
  • Изобразите на языке жестов понятие "полиморфизм".
  • Сколько процентов кода со stackoverflow.com содержалось в вашем последнем проекте?
  • Умеете ли вы "договариваться" с QA накануне релиза?
  • В каких единицах измеряется радиус кривизны кода?
  • Сколько раз в день вы пользуетесь фразой "Не знаю, локально все работает"?
  • Каким вы видите свой код через пять лет?
  • Разрешена ли в нашей стране пропаганда табличной верстки?
  • Как вы относитесь к однополому парному программированию?
  • Как дебажить векторный код на растровых мониторах?
  • Каковы нормативы для показателя lines per gallon для senior software engineer?
  • Спроектируйте отказоустойчивый веб-кластер, используя приставки Dandy и телефоны Nokia.
  • Какова ваша скорость полной сборки-разборки билда?
  • Раскройте геополитические предпосылки kernel panic с точки зрения теории струн.
  • Какую эмоцию вам напоминает смайл O(n) ?
  • Назовите стоимость разработки среднестатистического приложения в килокалориях.
  • Так... вы тут написали "Объектно-ориентированый CSS"... А какие еще проявления шизофрении вам известны?
  • Покупаете ли вы страховку на случай падения вашего кода на продакшене?
  • Какие патерны проектирования детей вы знаете?
  • Какие методологии вы используете при знакомстве с девушками, scrum или agile? Чем они лучше ad hoc в одиночестве?
  • Xbox, PlayStation или Terminal — какую консоль предпочитаете?
  • Вас когда-нибудь запирали в серверной? За что?
  • Какие приемущества force push перед стандартной работой с репозиторием? сколько времени данная методика экономит лично вам?
  • Скажите честно, вы врёте в LinkedIn?
  • По каким внешним признакам разработчика можно определить длину спринта?
  • Вы толерантны к копипастам?
  • "Семь раз update один раз commit" или "семь раз commit один раз revert" - какой методологии вы придерживаетесь?
  • Цикл, условие, переменная — а какие еще термины из С++ вы знаете, чтобы отказать парню?
  • Цой, Ленин, PHP — что между ними общего?
  • Как объяснить джуниору что пинговать сервера в его возрасте – это нормально?
  • Назовите самое экстремальное место в котором вы занимались багфиксингом.
  • Напишите простейшую операционную систему. Уложитесь в 140 символов.
  • Как часто вы играете со шрифтами?
  • В резюме сказано, что вы проработали 10 лет в отделе тестирования майкрософт. Мы проверили - такого отдела не существует!
  • Как вы относитесь к легализации курения мануалов?
  • велошлем купить

    Posted in Fun.


    Создание swap-файла в файле :)

    Уж простите за тавтологию, но иногда создавать новый дисковый раздел под раздел подкачки (swap) не представляется возможным. В таких случаях можно создать его в виде файла в файловой системе. Для примера рассмотрим создание дополнительного swap-файла размером 8ГБ:

    Дополнительный swap-файл в linux

    Создание дополнительного файла подкачки

    # dd if=/dev/zero of=/swapfile bs=1M count=8192
    8192+0 records in
    8192+0 records out
    8589934592 bytes (8,6 GB) copied, 13,2861 s, 647 MB/s
     
    # ls -l /swapfile 
    -rw-r--r--. 1 root root 8589934592 Май 12 11:13 /swapfile
     
    # mkswap /swapfile 
    mkswap: /swapfile: warning: dont erase bootbits sectors
            on whole disk. Use -f to force.
    Setting up swapspace version 1, size = 8388604 KiB
    no label, UUID=278eca1b-2af8-4e42-be11-5025ba0f3d8d

    Обратите внимание на размер свободного swap-а после первой и второй команд free:

    # free; swapon /swapfile ; free
                 total       used       free     shared    buffers     cached
    Mem:      32867736   30405392    2462344          0     153196    8790844
    -/+ buffers/cache:   21461352   11406384
    Swap:      8388600       7596    8381004
                 total       used       free     shared    buffers     cached
    Mem:      32867736   30411360    2456376          0     153196    8790844
    -/+ buffers/cache:   21467320   11400416
    Swap:     16777200       7596   16769604
     
    # echo '/swapfile none swap sw 0 0' >> /etc/fstab

    Posted in *nix.

    Tagged with , .


    MySQL 5.6 и sql_mode

    После переезда с версии MySQL 5.5.13 на 5.6.10 стали вылезать странные грабли.

    Симптом №1:

    Caused by: java.sql.SQLException: Incorrect string value: '\xE6\xAF\x94FOX...' for column 'parameter_value' at row 4
            at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
            at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)

    Симптом №2:

    Data truncation: Data too long for column 'channel' at row 1
    org.hibernate.exception.DataException: could not execute native bulk manipulation query

    Так как "раньше всё работало" и в код приложения никто изменений не вносил, закралось подозрение, что новый mysql работает в каком-то более строгом режиме. Гугление вывело на глобальную переменную sql_mode.

    mysql> show global variables like 'sql_mode';
    +--------------------------+--------------------------------------------+
    | Variable_name            | Value                                      |
    +--------------------------+--------------------------------------------+
    | sql_mode                 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
    +--------------------------+--------------------------------------------+

    Читаем официальное руководство и видим:

    STRICT_TRANS_TABLES
    If a value could not be inserted as given into a transactional table, abort the statement. For a nontransactional table, abort the statement if the value occurs in a single-row statement or the first row of a multiple-row statement.

    На основе этой инфы приходит в голову мысль, что надо этот режим STRICT_TRANS_TABLES попробовать отключить:

    mysql> SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
     
    mysql> show global variables like 'sql_mode';
    +---------------+------------------------+
    | Variable_name | Value                  |
    +---------------+------------------------+
    | sql_mode      | NO_ENGINE_SUBSTITUTION |
    +---------------+------------------------+

    И таки да, после этого запросы, ранее выполнявшиеся с ошибками, стали отрабатывать нормально, как и было на версии 5.5.13. Чтобы сохранить изменения навсегда, в /etc/my.cnf я добавил в секции [mysqld]

    sql-mode="NO_ENGINE_SUBSTITUTION"

    Однако далее меня ждала еще одна засада – после рестарта mysql-сервера я опять увидел знакомую картину, несмотря на внесенные в /etc/my.cnf изменения:

    mysql> show global variables like 'sql_mode';
    +--------------------------+--------------------------------------------+
    | Variable_name            | Value                                      |
    +--------------------------+--------------------------------------------+
    | sql_mode                 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION |
    +--------------------------+--------------------------------------------+

    Это было непостижимо и удивительно. Я уже и еще раз проверил hostname у сервера, дабы убедиться, что всё ранее сделанное происходило именно на том сервере, где и должно было происходить. Почесав пару минут репу, решил проверить наличие других конфигов mysql-сервера в системе. И таки нашёл один такой в /usr/my.cnf:

    $ cat /usr/my.cnf | grep -vE "^#" | sed -r "/^$/ d"
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    Вот он, вражеский конфиг, который переопределял моё значение sql_mode! Что самое прикольное, больше ничего в этом конфиге не было. Как будто его специально всунули, чтобы добавить мне головняка. После удаления файла /usr/my.cnf и рестарта mysql-сервера я уже раз и навсегда получил возможность наслаждаться значением sql_mode без STRICT_TRANS_TABLES.

    Posted in Howto.

    Tagged with .