• Быстрый переход
  • Рубрики
  • Свежие записи
  • Метки
  • Архивы
  • Реклама 1
  • Реклама 2
  • Рейтинг@Mail.ru

    Добро пожаловать! Ваш IP-адрес: ec2-54-198-108-19.compute-1.amazonaws.com

    Nginx большие cookies и ошибка сервера 400 Bad Request

    Не давно наткнулся на такую проблему. Нужно было просмотреть превью (Preview), на вордпрессе, в котором был относительно большой объем информации, который необходимо хранить в куках. После чего я получаю ошибка сервера 400 Bad Request
    Как оказывается, при увеличении размеров cookie, заголовок запроса клиента не уместился в буфер для чтения, размер которого у nginx’а по умолчанию составляет 1K.

    Директива: client_header_buffer_size
    синтаксис: client_header_buffer_size размер;
    умолчание: client_header_buffer_size 1k;
    контекст: http, server

    Задаёт размер буфера для чтения заголовка запроса клиента. Для большинства запросов достаточно буфера размером в 1K байт. Однако если в запросе есть длинные cookies, или же запрос пришёл от WAP-клиента, то он может не поместиться в 1K. Поэтому, если строка запроса или поле заголовка запроса не помещаются полностью в этот буфер, то выделяются буферы большего размера, задаваемые директивой large_client_header_buffers.

    Директива: large_client_header_buffers
    синтаксис: large_client_header_buffers число размер;
    умолчание: large_client_header_buffer 4 8k;
    контекст: http, server

    Задаёт максимальное число и размер буферов для чтения большого заголовка запроса клиента. Строка запроса не должна превышать размера одного буфера, иначе клиенту возвращается ошибка 414 (Request-URI Too Large). Поле заголовка запроса также не должно превышать размера одного буфера, иначе клиенту возвращается ошибка 400 (Bad Request). Буферы выделяются только по мере необходимости. По умолчанию размер одного буфера равен 8K байт. Если по окончании обработки запроса соединение переходит в состояние keep-alive, эти буферы освобождаются.
    Поэтому, при возникновении 400 ошибки предположительно по описанной причине, увеличиваем буферы чтения (значения подбираются по необходимости). Напр:

    server {
    ...
    client_header_buffer_size 4k;
    large_client_header_buffers 8 16k;
    ...
    }

    Также возможно понадобится отредактировать директивы proxy_buffers и proxy_buffer_size

    Автоматическая сборка мусора (Automatic Vacuuming) в PostgreSQL

    Синтаксис VACUUM:
    VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]
    VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]

    Синтаксис ANALYZE:
    ANALYZE [ VERBOSE ] [ table [ ( column [, ...] ) ] ]

    Кроме сборки мусора (VACUUM) производится ещё и анализ (ANALYZE). Периодическое выполнение команды ANALYZE необходимо для нормального функционирования планировщика. Собранная с помощью этой команды статистика позволяет значительно ускорить выполнение SQL- запросов. То есть, если не хочется настраивать автоматическую сборку мусора, то в любом случае её придётся делать только теперь в ручную. Процесс обычной сборки мусора в PostgreSQL (VACUUM без приставки FULL) не блокирует таблиц и может выполняться в фоне, не мешая выполнению запросов. Регулярное исполнение команд VACUUM и ANALYZE обязательно. Это необходимо по той причине, что иначе не получится заново использовать дисковое пространство, которое занимают ранее удалённые или изменённые строки и не удастся обновить статистику для планировщика запросов. И то и другое отрицательно сказывается на эффективности использования ресурсов и производительности запросов. Начиная с версии PostgreSQL 8.1 сервер может самостоятельно автоматически запускать ещё один системный процесс, который, соответственно, так и называется autovacuum daemon. Все настройки для этого процесса хранятся в postgresql.conf. К значениям этих параметров следует отнестись крайне внимательно. Если по каким-то причинам демон было решено не запускать, то в любом случае необходимо производить сборку мусора и набор статистики в ручную.

    Основным средством физического и аналитического сопровождения баз данных в PostgreSQL является команда SQL VACUUM и ее аналог — сценарий vacuumdb. Оба средства выполняют две общие функции:
    1.удаление всех данных, оставшихся в результате отмены транзакций и других операций, оставляющих временные данные;
    2.анализ операций с базами данных, по результатам которого PostgreSQL конструирует более эффективные запросы.

    Подробнее...

    Как перезапустить IIS через cmd?

    Возможно, вам придется перезапустить Internet Information Services (IIS) перед определенные изменения конфигурации, или когда приложения становятся недоступными или подвисшим. Часто первым шагом в устранении неполадок с вашего сайта следует перезагрузить IIS. Для этого мы должны отсановить IIS.
    1. Идем в Start menu (Пуск), кликаем Run (Выполнить).
    2. Далее прописываем cmd и нажимает enter(ввод), перед Вами появится черный экран!
    3. В командной строке введите IISRESET /stop . IIS попытается остановить работу всех служб и вернется подтверждение, когда все процессы были прекращены.

    Как перезапустить IIS через cmd?

    Как перезапустить IIS через cmd?

    4. Делле запускаем IIS обратно! IISRESET /start

    Как перезапустить IIS через cmd?

    Как перезапустить IIS через cmd?

    Установка MegaCLI на Linux Debian

    # apt-get install -y alien unzip

    Далее скачиваем с официального сайта архив с программой

    http://www.lsi.com/downloads/Public/MegaRAID Common Files/8.00.48_Linux_MegaCLI.zip

    В архиве будут два rpm пакета:
    Lib_Utils-1.00-08.noarch.rpm
    MegaCli-8.01.06-1.i386.rpm

    Расспакавываем файл:

    rpm2cpio MegaCli-8.01.06-1.i386.rpm | cpio -idmv
    ./opt/MegaRAID/MegaCli/MegaCli
    ./opt/MegaRAID/MegaCli/MegaCli64
    rpm2cpio Lib_Utils-1.00-08.noarch.rpm| cpio -idmv
    ./opt/lsi/3rdpartylibs/LGPLLicenseV2.txt
    ./opt/lsi/3rdpartylibs/libsysfs.so.2.0.2
    ./opt/lsi/3rdpartylibs/src/sysfsutils-2.2.0.tar.gz
    ./opt/lsi/3rdpartylibs/x86_64/libsysfs.so.2.0.2

    Копируем MegaCLI в /opt:
    mkdir -p /opt/MegaRAID/MegaCli
    cp ./opt/MegaRAID/MegaCli/* /opt/MegaRAID/MegaCli/

    cp ./opt/lsi/3rdpartylibs/x86_64/libsysfs.so.2.0.2 /usr/lib/

    Все новые скрипты и бинарные файлы нужно сделать исполняемыми:
    chmod 755

    Сделаем символьные ссылки в /usr/bin для MegaCLI:
    ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/MegaCli

    MegaCli -v
    MegaCLI SAS RAID Management Tool Ver 8.01.06 Dec 23, 2010
    (c)Copyright 2010, LSI Corporation, All Rights Reserved.

    Exit Code: 0x00

    Далее запускаем:

    megacli -LDInfo -Lall -Aall — информация о контроллере

    megacli -PDList -Aall — состояние всех дисков

    или так

    megacli -PDList -aAll | egrep "Enclosure Device ID:|Slot Number:|Inquiry Data:|Error Count:|state"

    Быстрая установка браузера Firefox на Debian 7 wheezy

    Debian по умолчанию поставляется с Iceweasel веб-браузер, а не Firefox. Хотя рекомендуется использовать Iceweasel у вас может быть необходимость в установке Firefox здесь простой способ, как установить Firefox на Debian хриплый, используя репозиторий Debian импорта Linux Mint в. Для начало редактируем /etc/apt/sources.list и добавьте следующую строку:

    deb http://packages.linuxmint.com debian import
    Далее обновляемся:

    # apt-get update

    Далее устонавливаем

    # apt-get install firefox

    Установка Nginx в Debian

    NGINX - это простой, надежный и быстрый сервер, который не перегружен функциями. Применение веб-сервера NGINX рационально, преимущественно, для статических веб-сайтов, а также в качестве прокси-сервера перед динамическими веб-сайтами.

    Достоинствами NGINX являются:

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

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

    • Максимально эффективная работа с многопроцессорными системами;
    • Функции масштабируемости на мультипроцессорных компьютерах;
    • Кроссплатформенность, т.е. работа на большинстве существующих аппаратных платформах и операционных системах;
    • Минимальное потребление ресурсов центрального процессора (CPU), а также памяти и системы ввод/вывода (I/O) на компьютерах;
    • Отличный баланс между простотой и гибкостью применяемой конфигурации.
    • Управляя более 15% всех интернет-доменов, NGINX стал стандартным инструментом для создания быстрых и масштабируемых веб-сайтов.

    NGINX полностью поддерживает протоколы HTTP/1.1, SPDY/2, WebSocket, FastCGI, uwsgi и SCGI, и поэтому позволяет подключать пользователей к таким популярным приложениям, как Joomla, WordPress, Magento, Drupal и других, размещенных на одном сервере или в сети для повышения производительности и большой масштабируемости.

    Благодаря своей компактной и предсказуемой памяти и используемого CPU, NGINX чрезвычайно популярное веб-программное обеспечение для использования во всех типах облачных сред, обслуживающий уже более 45% веб-сайтов, размещенных на Amazon AWS.

    NGINX обеспечивает простую интеграцию с применением таких рамок, как Rails, Node.js, JBoss, Django или Zend. Заменяя или дополняя конфигурацию устаревших приложений поставляемых вместе с сервером, NGINX позволяет масштабировать и создавать веб-сайты без покупки лишних аппаратных средств.

    Основные функции HTTP-сервера:
    Акселерированное обратное проксирование с применением кэширования, простейшее распределение нагрузки и устойчивость к отказам;

    Акселерированная поддержка FastCGI, uwsgi, SCGI и memcached серверов с кэшированием;

    Обслуживание статических запросов, индексных файлов, автоматическое создание списка файлов, а также кэш дескрипторов открытых файлов;

    Модульность, фильтры, включая сжатие (gzip), докачка (byte-ranges), chunked ответы, SSI-фильтр, XSLT-фильтр, конвертация изображений; несколько подзапросов на одной странице, которые могут обрабатываться в SSI-фильтре через прокси или FastCGI и выполняться параллельно;

    Поддержка SSL и расширения TLS SNI.

    Другие возможности HTTP-сервера:

    • Большая гибкость конфигурации;
    • Виртуальные серверы, определяемые по IP-адресу и имени;
    • Обновление и изменение настроек исполняемого файла без перерыва в обслуживании клиентов;
    • Поддержка pipelined и keep-alive соединений;
    • Ограничение количества одновременных соединений и запросов с одного адреса;
    • Выполнение различных функций в зависимости от адреса клиента;
    • Ограничение доступа в зависимости от адреса клиента и HTTP Basic авторизации;
    • Проверка HTTP referer;
    • Быстрая ротация логов, настройка форматов логов, а также буферизованная запись в лог;
    • Специальные страницы для ошибок 3xx-5xx;
    • Модуль rewrite: изменение URI с помощью регулярных выражений;
    • Методы PUT, DELETE, MKCOL, COPY и MOVE;
    • FLV и MP4 стриминг;
    • Встроенный Perl;
    • Ограничение скорости выдачи ответов;

    Подробнее...

    Настройка автоматического запуска supervisord на Linux

    Для начало установим supervisor

    # sudo apt-get install supervisor
    Конфигурационный файл лежит в /etc/supervisord.conf, также там и настраиваем запуск PID файла, совместно с файлом который будет скачан далее:
    pidfile=/var/run/supervisord.pid

    Далее скачиваем с github файл в /etc/init.d
    sudo curl https://gist.github.com/howthebodyworks/176149/raw/88d0d68c4af22a7474ad1d011659ea2d27e35b8d/supervisord.sh > /etc/init.d/supervisord

    Задаем права на файл:

    # sudo chmod +x /etc/init.d/supervisord

    и добавляем в автозапуск:

    # sudo update-rc.d supervisord defaults

    После пробуем запустить:

    service supervisord start
    service supervisord stop

    Установка Postgresql 9.3 Debian 7 Wheezy

    Для установки воспользуемся официальным репозиторием.

    Создаем конфиг репозитория.

    sudo nano /etc/apt/sources.list.d/pgdg.list

    Вставляем одну URL репозитория

    deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main

    Узнать кодовое имя дистрибутива можно командой «lsb_release -c»

    Добавляем ключ репозитория.

    wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -

    Устанавливаем

    sudo apt-get update
    sudo apt-get install postgresql

    так же можно

    sudo apt-get install postgresql-9.3 postgresql-contrib-9.3 postgresql-doc-9.3

    [warn] No PostgreSQL clusters exist; see «man pg_createcluster» … (warning).

    Не давно наткнулся на такую проблему, мне не удавалось полностью установить PostgreSQL на Debian.

    Все началось с:
    sudo apt-get install postgresql
    После чего у меня не запускался postgreSQL и не создавалось директория /etc/postgresql/
    Далее я решил удалить все и начать все с начало.

    sudo apt-get purge postgresql

    Но при удалении и установки по новой я опять получал тоже самое.

    warn] No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).
    Purging configuration files for postgresql-9.1 ...
    Removing postgresql-client-9.1 ...
    Removing postgresql-common ...
    [warn] No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).
    Removing 'diversion of /usr/bin/pg_config to /usr/bin/pg_config.libpq-dev by postgresql-common'
    Purging configuration files for postgresql-common ...

    Не много поискав в интернете я нашел ряд рекомендации и ВОТ, то что мне реально помогло:

    Во первых:
    sudo apt-get --purge remove postgresql\*
    После того, как все пакеты PostgreSQL были удалены, запустите
    rm -r /etc/postgresql/
    rm -r /etc/postgresql-common/
    rm -r /var/lib/postgresql/
    userdel -r postgres
    groupdel postgres

    sudo apt-get install postgresql-9.1 postgresql-contrib-9.1 postgresql-doc-9.1

    Получаем:
    Setting up postgresql-9.1 (9.1.11-1.pgdg70+1) ...
    Creating new cluster 9.1/main ...
    config /etc/postgresql/9.1/main
    data /var/lib/postgresql/9.1/main
    locale en_IN
    port 5432
    update-alternatives: using /usr/share/postgresql/9.1/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
    [ ok ] Starting PostgreSQL 9.1 database server: main.

    На этом все!

    Установка и настройка Sphinx на Windows

    Sphinx является системой полнотекствого поиска, распространяемой под лицензией GPL второй версии. Сфинкс позволяет добавить функции быстрого полнотекстового поика в сторонние приложения и был специально спроектирован для взаимодействия с реляционными базами данных и скриптовыми языками программирования. На данный момент движок позволяет индексировать данные, хронящиеся в базах данных MySQL, PostgreSQL или в любом другом формате через XML-шлюз.

    Для начало идем на страницу загрузки:

    http://sphinxsearch.com/downloads/release/ и качаем Win32 binaries w/MySQL support ну или другую версию по надобности.

    Скачав архив, распаковываем его в любое место на жестком диске, я обычно распаковываю в корень диска D.

    После распаковки у меня получилась папка D:/sphinx-0.9.9-win32, которую я для удобства использования переименовал в просто D:/sphinx

    Теперь у нас есть рабочая версия sphinx, осталось только создать файл настроек.
    Основной интерес для нас представляет папка bin. В ней находятся все утилиты, которые мы будем использовать в дальнейшем. Также нам могут пригодиться файлы sphinx.conf.in и sphinx-min.conf.in, которые представляют собой шаблоны файлов конфигурации. Их можно использовать в качестве примеров при настройке Sphinx.
    Нам так же необходимо подготовить рабочую папку, в которой будут храниться файл конфигурации, индексы и логи. В папке sphinx создадим папку data, а в ней в свою очередь создадим пустой файл config.txt и папки index, log и binlog. Эти папки нужно создать заранее, т.к. Sphinx не сможет создать их сам (у меня, по крайней мере, не смог) и просто не запустится.
    Чтобы запустить Sphinx, его необходимо зарегистрировать как службу Windows. Запустим командную строку от имени администратора и введём следующую команду:
    D:\sphinx\bin\searchd --config D:\sphinx\data\config.txt --install --servicename Sphinx
    При необходимости, удалить ранее установленную службу можно следующей командой:
    D:\sphinx\bin\searchd --servicename Sphinx --delete

    Попытка сразу запустить зарегистрированную службу Sphinx завершится неудачей. Дело в том, что наш файл конфигурации (D:\sphinx\data\config.txt) пока ещё пуст. Добавим в него следующие строки:

    searchd
    {
    listen = 9306:mysql41
    pid_file = c:/sphinx/data/searchd.pid
    log = c:/sphinx/data/log/log.txt
    query_log = c:/sphinx/data/log/query_log.txt
    binlog_path = c:/sphinx/data/binlog/
    }
    Я намеренно убрал все необязательные настройки, оставив только самые важные.

    Настройка listen указывает, что Sphinx будет использовать порт 9306 и протокол mysql. Использование протокола mysql позволяет подключаться к Sphinx как к обычной базе данных MySQL.
    Настройка pid_file указывает расположение pid-файла, который используется для внутренних нужд.
    Настройки log и query_log указывают расположение файлов логов, в которые будут записываться все события.
    Настройка binlog_path указывает расположение файлов, которые могут использоваться для восстановления данных real-time индексов после сбоя.
    Помимо этого, для запуска службы Sphinx необходимо создать хотя бы один индекс. В одной из следующих статей я постараюсь рассказать о создании индексов подробнее, а пока просто создадим фейковый real-time индекс.

    Подробнее...




    Cisco Systems
    OS FreeBSD
    OS Linux
    OS MikroTik Router