- Информация о материале
- Автор: Артемьев Евгений Викторович
- Категория: SQL
- Просмотров: 1643
Настройки PostgreSQL для работы с 1С:Предприятием. Часть 2
Общие положения
В документе описывается настройка PostgreSQL версий 9.2-9.4 на максимальную производительность для платформы 1С. Предполагается, что сервер, используемый для PostgreSQL является достаточно производительным и имеет приблизительно:- 4 - 512 Gb RAM
- 2 - 256 CPU cores
- RAID 0-1 или SSD
Настройки сервера для PostgreSQL
- Рекомендуется отключать HyperThreading. Для программ типа систем управления базами данных от него скорее вред чем польза.
- Также рекомендуется отключать Energy Saving, поскольку в противном случае могут непредсказуемо вырастать задержки ответов БД.
- Надо запретить своппинг разделяемой памяти SYSV/posix (FreeBSD: kern.ipc.shm_use_phys=1)
Обозначения
- RAM - объем оперативной памяти сервера. Если сервер используется не только для PostgreSQL, то надо уменьшить эту величину на объем занятой памяти.
- NCores - суммарное число ядер на всех CPU сервера
- max_connections - максимальное число коннектов (или сессий) к PgSQL. Задается в конфигурационном файле.
- WAL - Write Ahead Log, опережающий лог действий с таблицами и индексами. Основная задача - целостность и отказоустойчивость базы данных при одновременном росте производительности.
- checkpoint - точка восстановления база данных. Все WAL данные, записанные до checkpoint становятся не нужны.
- X..Y - диапазон значений от X до Y включительно
Параметры производительности
shared_buffers = RAM/4Количество памяти, выделенной PgSQL для совместного кеша страниц. Эта память разделяется между всеми процессами PgSQL.
temp_buffers = 256MB Максимальное количество страниц для временных таблиц. Т.е. это верхний лимит размера временных таблиц в каждой сессии.
work_mem = RAM/32..64 или 32MB..128MB Лимит памяти для обработки одного запроса. Эта память индивидуальна для каждой сессии. Теоретически, максимально потребная память равна max_connections * work_mem, на практике такого не встречается потому что большая часть сессий почти всегда висит в ожидании. Это рекомендательное значение используется оптимайзером: он пытается предугадать размер необходимой памяти для запроса, и, если это значение больше work_mem, то указывает экзекьютору сразу создать временную таблицу. work_mem не является в полном смысле лимитом: оптимайзер может и промахнуться, и запрос займёт больше памяти, возможно в разы. Это значение можно уменьшать, следя за количеством создаваемых временных файлов:
select maintenance_work_mem = RAM/16..32 или work_mem * 4 или 256MB..4GBЛимит памяти для обслуживающих задач, например вакуум, автовакуум или создания индексов.
effective_cache_size = RAM - shared_buffersОценка размера кеша файловой системы. Увеличение параметра увеличивает склонность системы выбирать IndexScan планы. И это хорошо.
effective_io_concurrency = 2Оценочное значение одновременных запросов к дисковой системе, которые она может обслужить единовременно. Для одиночного диска = 1, для RAID - 2 или больше.
random_page_cost = 1.5-2.0 для RAID, 1.1-1.3 для SSDСтоимость чтения рандомной страницы (по-умолчанию 4). Чем меньше seek time дисковой системы тем меньше (но > 1.0) должен быть этот параметр. Излишне большое значение параметра увеличивает склонность PgSQL к выбору планов с сканированием всей таблицы (PgSQL считает, что дешевле последовательно читать всю таблицу, чем рандомно индекс). И это плохо.
autovacuum = onВключение автовакуума. Не выключайте его!
autovacuum_max_workers = NCores/4..2 но не меньше 4Количество процессов автовакуума. Общее правило - чем больше write-запросов, тем больше процессов. На read-only базе данных достаточно одного процесса.
autovacuum_naptime = 20sВремя сна процесса автовакуума. Слишком большая величина будет приводить к тому, что таблицы не будут успевать вакуумиться и, как следствие, вырастет bloat и размер таблиц и индексов. Малая величина приведет к бесполезному нагреванию.
bgwriter_delay = 20msВремя сна между циклами записи на диск фонового процесса записи. Данный процесс ответственен за синхронизацию страниц, расположенных в shared_buffers с диском. Слишком большое значение этого параметра приведет к возрастанию нагрузки на checkpoint процесс и процессы, обслуживающие сессии (backend). Малое значение приведет к полной загрузке одного из ядер.
bgwriter_lru_multiplier = 4.0bgwriter_lru_maxpages = 400Параметры, управляющие интенсивностью записи фонового процесса записи. За один цикл bgwriter записывает не больше, чем было записано в прошлый цикл, умноженное на bgwriter_lru_multiplier, но не больше чемbgwriter_lru_maxpages.
synchronous_commit = offВыключение синхронизации с диском в момент коммита. Создает риск потери последних нескольких транзакций (в течении 0.5-1 секунды), но гарантирует целостность базы данных, в цепочке коммитов гарантированно отсутствуют пропуски. Но значительно увеличивает производительность.
checkpoint_segments = 32..256 < 9.5Максимальное количество сегментов WAL между checkpoint. Слишком частые checkpoint приводят к значительной нагрузке на дисковую подсистему по записи. Каждый сегмент имеет размер 16MB.
checkpoint_completion_target = 0.5..0.9Степень "размазывания" checkpoint'a. Скорость записи во время checkpoint'а регулируется так, что бы время checkpoint'а было равно времени, прошедшему с прошлого, умноженному на checkpoint_completion_target.
min_wal_size = 512MB .. 4G > =9.5
max_wal_size = 2 * min_wal_size > =9.5Минимальное и максимальный объем WAL файлов. Аналогично checkpoint_segments.
ssl = offВыключение шифрования. Для защищенных ЦОД-ов шифрование бессмысленно, но приводит к увеличению загрузки CPU.
fsync = onВыключение параметра приводит к росту производительности, но появляется значительный риск потери всех данных при внезапном выключении питания. Внимание: если RAID имеет кеш и находиться в режиме write-back, проверьте наличие и функциональность батарейки кеша RAID контроллера! Иначе данные записанные в кеш RAID могут быть потеряны при выключении питания, и, как следствие, PgSQL не гарантирует целостность данных.
commit_delay = 1000commit_siblings = 5Групповой коммит нескольких транзакций. Имеет смысл включать, если темп транзакций превосходит 1000 TPS. Иначе эффекта не имеет.
temp_tablespaces = 'NAME_OF_TABLESPACE'Дисковое пространство для временных таблиц/индексов. Помещение временных таблиц/индексов на отдельные диски может увеличить производительность. Предварительно надо создать tablespace командой CREATE TABLESPACE. Если характеристики дисков отличаются от основных дисков, то следует в команде указать соответствующий random_page_cost. См. статью.
row_security = off >= 9.5Отключение контроля разрешения уровня записи.
max_files_per_process = 1000 (default)Максимальное количество открытых файлов на один процесс PostreSQL. Один файл это как минимум либо индекс либо таблица, но таблица/может состоять из нескольких файлов. Если PostgreSQL упирается в этот лимит, он начинает открывать/закрывать файлы, что может сказываться на производительности. Диагностировать проблему под Linux можно с помощью команды lsof.
Параметры для платформы 1С:Предприятия
standard_conforming_strings = offРазрешить использовать символ \ для экранирования.escape_string_warning = offНе выдавать предупреждение о использовании символа \ для экранирования.
max_locks_per_transaction = 256Максимальное число блокировок индексов/таблиц в одной транзакции.
max_connections = 500..1000Количество одновременных коннектов/сессий.
Параметры для PgBadger
Приводится согласно документацииПри большой нагрузке может влиять на производительность по причине большого потока записи на диск. Лучше вынести на отдельный шпиндель.
log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] ' или '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
lc_messages='C'
log_duration = on
log_statement = all
log_destination = stderrПримечание. Здесь пока никак не рассматриваются вопросы ротации логов и использования самого PgBadger'a.
Параметры дополнительных модулей
plantuner
Исходники git cloneДокументация
plantuner.fix_empty_table = 'on'Исправляет чрезмерную пессимистичность оптимизатора посгтреса на пустых, недавно созданных таблицах.
online_analyze
Исходники git clone
Документация
online_analyze.table_type = 'temporary'Автоматически анализировать временные таблицы при их изменении. Фоновый analyze может заметно отставать, и, как результат, планер ошибается.
online_analyze.verbose = 'off'Отключение излишней болтливости автоматического analyze.
источник: https://its.1c.ru/db/metod8dev#content:5866:hdoc
- Информация о материале
- Автор: Артемьев Евгений Викторович
- Категория: Видео
- Просмотров: 1400
1. iMovie
![iMovie Бесплатные видеоредакторы: iMovie](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/Snimok-ekrana-2018-12-21-v-18.28.20_1545655206-630x356.jpg)
- Платформы: macOS, iOS.
iMovie
Разработчик: Apple
Цена: Бесплатно
2. DaVinci Resolve
![DaVinci Resolve Бесплатные видеоредакторы: DaVinci Resolve](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/Snimok-ekrana-2018-12-21-v-18.37.01_1545655244-630x359.jpg)
- Платформы: Windows, macOS, Linux.
Скачать →
3. Shotcut
![Shotcut Бесплатные видеоредакторы: Shotcut](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/Snimok-ekrana-2018-12-21-v-18.33.26_1545655268-630x359.jpg)
- Платформы: Windows, macOS, Linux.
Скачать →
4. Lightworks
![Lightworks Бесплатные видеоредакторы: Lightworks](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/Snimok-ekrana-2018-12-21-v-18.43.12_1545655287-630x359.jpg)
- Платформы: Windows, macOS, Linux.
В базовой версии можно работать с видео вплоть до 5К, но опции экспорта ограничены 720р или 1080р при загрузке на Vimeo.
Скачать →
5. OpenShot
![OpenShot Бесплатные видеоредакторы: OpenShot](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/Snimok-ekrana-2018-12-21-v-18.39.53_1545655311-630x359.jpg)
- Платформы: Windows, macOS, Linux.
Скачать →
6. Avidemux
![Avidemux Бесплатные видеоредакторы: Avidemux](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/Snimok-ekrana-2018-12-21-v-18.48.01_1545655323-630x359.jpg)
- Платформы: Windows, macOS, Linux.
Скачать →
7. Quik
![Quik Бесплатные видеоредакторы: Quik](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/IMG_1269_1545655376-310x551.jpeg)
![Рождество здесь Бесплатные видеоредакторы: Рождество здесь](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/IMG_1271_1545655377-310x551.jpeg)
- Платформы: iOS, Android.
Редактор Quik от GoPro — видео из фото и музыки
Разработчик: GoPro
Цена: Бесплатно
8. Clips
![Clips Бесплатные видеоредакторы: Clips](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/IMG_1272_1545655410-310x551.jpeg)
![Этикетки Clips Бесплатные видеоредакторы: Этикетки Clips](https://cdn.lifehacker.ru/wp-content/uploads/2018/12/IMG_1274_1545655411-310x551.jpeg)
- Платформы: iOS.
Clips
Разработчик: Apple
Цена: Бесплатно
9. FilmoraGo
<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>- Платформы: Android.
FilmoraGo - Free Video Editor
Разработчик: Wondershare Software (H.K.) Co., Ltd.
Цена: Бесплатно
10. Movie Maker
- Платформы: Android.
Простое, но довольно функциональное приложение для монтажа, с которым можно легко объединить несколько видео, отредактировать их и добавить различные эффекты. Movie Maker предлагает целый набор фильтров, переходов и музыки, а также позволяет изменять скорость воспроизведения и применять к видео эффект размытия.
Movie Maker (YouTube) видео Редактор кино эдитор
Разработчик: ALIVE Inc.
Цена: Бесплатно
- Информация о материале
- Автор: Артемьев Евгений Викторович
- Категория: Разное
- Просмотров: 1421
IP – самый базовый протокол в стеке TCP/IP, все остальные протоколы являются надстройками над ним, поэтому вынуждены играть по его правилам. А по правилам протокола IP, пакет, передаваемый по сети, должен иметь поля source IP (адрес отправителя) и destination IP (адрес получателя).
Врать не буду – точно не знаю, но если не все протоколы, то во всяком случае те из них, которые используются для клиент-серверных сеансов связи, в обязательном порядке должны придерживаться этой инструкции. Иначе ничего работать не будет: если нет адреса получателя, то неизвестно, куда такой пакет слать, если нет адреса отправителя – непонятно, зачем этот пакет пришел, так как невозможно на него ответить (некуда!). Итак, любое сетевое устройство (будь то получатель или что-нибудь промежуточное), получив пакет, всегда знает, от кого и к кому он идет.
Теперь давай подумаем, а каким образом source IP и destination IP попадают внутрь пакета? Ну, они записываются в пакет программным кодом, который этот пакет формирует. А откуда они берутся? Destination IP задает пользователь (или приложение, или что-нибудь еще – вариантов куча, все не перечислишь), когда вводит, скажем, “telnet 127.0.0.1” (в данном случае – destination IP=127.0.0.1), а source IP берется автоматически из настроек системы.
Ок, теперь мы знаем, что в каждом пакете есть destination IP и source IP, а также как они в этот самый пакет попадают. А теперь я скажу, что такое ip spoofing (да ты и сам, наверное, уже знаешь ;)). Ip spoofing – это подмена реально source IP в пакете на ложный. То есть комп шлет пакет (много пакетов), а в поле “адрес отправителя” ставит не свой IP, а чужой (или вообще не существующий). Вот тут-то и начинается веселье: Инет построен так, что проверить достоверность указанного в пакете source IP очень сложно. На этом и построено огромное количество разрушительных DoS-атак. Например, DoS-умножение и циклические пакетные шторма.
КАК ДЕЛАЕТСЯ IP СПУФИНГ?
Хватит теории, давай перейдем к конкретным действиям :). Теоретически существует два способа подменить source IP в пакете: изменить IP своей системы на нужный, чтоб он автоматически добавился в пакет, когда тот будет формироваться, или сформировать пакет самостоятельно, записав в него какой угодно source IP. Второй способ значительно лучше, если не сказать, что первый вообще очень сомнительный. Дело в том, что, во-первых, IP, на который перенастраиваеться система, должен быть свободен, а во-вторых, ответы будут приходить на этот же IP, а он уже стал IP-шником нашей системы – это уже не спуфинг.Так что катит только первый способ. Но, как обычно бывает в таких случаях, он проблемный. Если делать все правильно, придется компилировать, программировать и т.д. Если это тебя не пугает, поищи на поисковиках следующие вещи: ipspoof.c, IP-spoof-2.txt, spoofit.h, spoof.c. Это исходники и библиотеки на сиях, реализующие спуфинг.
![Image result for ip спуфинг](https://antiddos.biz/wp-content/uploads/2016/12/man_in_the_middle.gif)
Разобраться будет сложно, так как все эти проги ориентированы на спуфинговые атаки, при которых атакующий не просто отправляет пакеты не со своим родным IP внутри, но и продолжает поддерживать связь с атакуемым, постоянно выдавая себя за другого. При DoS-атаках это не требуется – достаточно просто отправить пакеты, не заботясь об их дальнейшей судьбе (главное – отправлять их постоянно и побольше ;)). Так что то, что лежит в этих исходниках, на порядок сложнее того, что нужно нам.
Спрашивается: зачем себя мучить, ломая лишний раз голову над сложными проблемами, если можно воспользоваться уже готовыми тулзами? Согласен, разобравшись с spoofit.h и ipspoof.c один раз, всегда можно будет написать конкретную прогу для конкретных целей, и это будет правильнее, чем пользоваться уже готовыми тулзами. Но бошка ведь тоже не железная и имеет свойство раскалываться, если всегда все делать по максимуму правильно и дотошно :). Так что давай сделаем так: кодинг я оставлю на твое усмотрение, а сам тебе расскажу про проги, при помощи которых можно спокойно спуфить и устраивать злейшие DoS-атаки, особо не напрягаясь.
SING-1.1
Что нужно, чтоб организовать DoS-умножение? Правильно, отправить какой-нибудь пинг на широковещательный адрес здоровенной сети, подменив в нем source IP на айпишник жертвы. Стало быть, нужна такая прога, которая умеет отправлять ICMP-пакеты, подменяя в них адрес отправителя. Такая прога есть :). Называется sing и имеет текущую версию 1.1. Скачать можно тут: http://download.sourceforge.net/sing/. После даунлода архивчик надо распаковать, а полученный исходник отконфигурировать (./configure), откомпилировать (make) и проинсталлировать (make install) – если тебя все это парит, скачай какую-нибудь rpm-ку (или какой у тебя там дистриб линя?).Теперь прогу можно вызвать, набрав в командной строке “sing”. Sing – это сетевая тулза, умеющая формировать практически любые ICMP-пакеты, спуфить адрес в них и даже определять удаленную ОС (последнее вряд ли может пригодиться, так как есть nmap, который великолепно справляется с этой задачей). Итак, sing установлен: первым делом ввожу:
1 |
sing 127.0.0.1 |
Отлично, пропинговалось. Теперь попробую поспуфить:
1 |
sing -S 127.0.0.2 127.0.0.1 |
Вроде все хорошо – спуфенный пинг прошел (пакеты вернулись, т.к. я пока использую loopback). Но мне хочется проверить, все ли ОК. Давай я запрещу файрволу пропускать любые пакеты с 127.0.0.1, попробую пропинговаться обычным ping-ом (который, естественно, все будет слать с 127.0.0.1), а потом попробую пролезть через файрвол sing-ом, меняя 127.0.0.1 на 127.0.0.2. Ввожу:
1 |
ipchains -A input -s 127.0.0.1 -j DENY |
1 |
ipchains -L |
и вижу, что теперь все пакеты с 127.0.0.1 отбрасываются.
Пингую обычным ping-ом:
1 |
ping 127.0.0.1 |
Восемь пакетов ушло, вернулось – ноль. Естественно, ведь файрвол все блокирует.
Теперь то же самое, но sing-ом и со спуфом:
1 |
sing -S 127.0.0.2 127.0.0.1 |
Опппа!!! Все получилось! Sing обдурил файрвол, прикинувшись, что пакеты идут с 127.0.0.2, а не с 127.0.0.1, который блокируется!
А пакеты вернулись потому, что я использовал loopback: моя система слала ответы на 127.0.0.2, но они пришли к ней же обратно, так как это, как и 127.0.0.1, тоже ее петлевой адрес. Хорошо, теперь попробуем проделать то же самое с удаленной системой. Я буду иллюстрировать все на примере сервака m-net.arbornet.org (да не обидятся на меня его админы ;)). Сначала просто пингую (ping-ом или sing-ом без спуфа – все равно):
1 |
ping m-net.arbornet.org |
Сервак отвечает – все хорошо.
А теперь отправляю серваку несколько пакетов, типа от него же самого (так вызываются циклические ICMP-штормы: сервак получает пакеты вроде как от себя, отвечает на них самому же себе, и так много раз, пока не наступит 3.14zDoS):
1 |
sing -S m-net.arbornet.org m-net.arbornet.org |
Отправлено одиннадцать пакетов, вернулось – ноль. Естественно, сервак отвечал на мои пакеты самому себе, поэтому мне ничего не пришло. И не надо :).
Как видишь, все сработало :). Можно досить спуфом, не ковыряясь во всяком коде! Не думаю, что мои пакеты могли нанести arbornet-у какой-либо ущерб – во-первых, их было слишком мало, во-вторых, на арборнете сидят грамотные админы, и они, наверное, догадались настроить ДДоС защиту так, чтоб она не отвечала на свои собственные ICMP-пакеты ;). Тем не менее, мы с тобой, приятель, разобрались в довольно гиморном вопросе. До новых встреч, и удачных тебе экспериментов в net security!!!
источник: https://antiddos.biz/chto-takoe-ip-spufing-spoofing/
Подкатегории
Windows Кол-во материалов: 19
Linux Кол-во материалов: 2
Настройка DNS сервера Кол-во материалов: 2
Принтеры Кол-во материалов: 3
Apache Кол-во материалов: 7
SQL Кол-во материалов: 1
Видео Кол-во материалов: 1
Разное Кол-во материалов: 2
Страница 12 из 13