From 32a2b8b14042eb276062c1ce7b8d1f2b7fcb6d3e Mon Sep 17 00:00:00 2001 From: "im.makarov" Date: Mon, 9 Dec 2024 21:57:44 +0300 Subject: [PATCH] Towa - good phonk --- db/POSTGRES.MD | 117 +++++++++++++++++++++++++++++++++++++- docker/DOCKER.MD | 9 ++- docker/NOTES.MD | 43 ++++++++++++++ linux/COMMANDS.MD | 5 ++ vebsrv/haproxy/HAPROXY.MD | 24 +++++++- vebsrv/nginx/NGINX.MD | 29 ++++++++++ windows/WINDOWS.MD | 32 +++++++++++ 7 files changed, 256 insertions(+), 3 deletions(-) create mode 100644 windows/WINDOWS.MD diff --git a/db/POSTGRES.MD b/db/POSTGRES.MD index eb84744..046dfdc 100644 --- a/db/POSTGRES.MD +++ b/db/POSTGRES.MD @@ -83,4 +83,119 @@ psql -U postgres -d postgres -c "SELECT datname FROM pg_database WHERE datistemp --- -`ALTER DATABASE "downloader8097" RENAME TO "downloader_vo_8097";` - переименовать БД \ No newline at end of file +`ALTER DATABASE "downloader8097" RENAME TO "downloader_vo_8097";` - переименовать БД + +--- +Анализ БД + +``` +SELECT pid, usename, datname, client_addr, client_port, application_name, state +FROM pg_stat_activity +WHERE datname = current_database(); +``` +``` +SELECT pid, + now() - query_start AS runtime_query, + state, + query, + usename, + datname +FROM pg_stat_activity +WHERE state = 'active' and datname = current_database() +ORDER BY runtime_query DESC; +``` +``` +SELECT pid, + now() - xact_start AS transaction_time, + state, + query, + usename, + datname +FROM pg_stat_activity +WHERE state IN ('active', 'idle in transaction') and datname = current_database() +ORDER BY transaction_time DESC; +``` +``` +SELECT + pid, -- Идентификатор процесса + state, -- Состояние процесса + now() - query_start AS query_runtime, -- Время выполнения текущего запроса + now() - xact_start AS transaction_runtime, -- Время выполнения транзакции + query, -- Текущий запрос + usename, -- Пользователь + datname, -- База данных + xact_start -- Время начала транзакции +FROM pg_stat_activity +WHERE state IN ('active', 'idle in transaction') + AND datname = current_database() +ORDER BY transaction_runtime DESC; +``` +``` +# использование памяти и ресурсов +SELECT * +FROM pg_stat_database; +``` +- `datid` — Идентификатор базы данных (OID). +- `datname` — Имя базы данных. +- `numbackends` — Количество активных соединений (клиентов) с этой базой. +- `xact_commit` — Общее количество успешно завершённых транзакций. +- `xact_rollback` — Общее количество откатов транзакций. +- `blks_read` — Количество блоков, считанных с диска. +- `blks_hit` — Количество блоков, найденных в кеше (попадания в shared_buffers). +- `tup_returned` — Количество строк, возвращённых клиенту. +- `tup_fetched` — Количество строк, извлечённых (например, SELECT). +- `tup_inserted` — Количество вставленных строк (INSERT). +- `tup_updated` — Количество обновлённых строк (UPDATE). +- `tup_deleted` — Количество удалённых строк (DELETE). +- `conflicts` — Количество конфликтов (например, из-за репликации). +- `temp_files` — Количество временных файлов, созданных сервером. +- `temp_bytes` — Количество данных, записанных во временные файлы (в байтах). +- `deadlocks` — Количество взаимоблокировок. +- `blk_read_time` — Общее время чтения блоков с диска (в миллисекундах). +- `blk_write_time` — Общее время записи блоков на диск (в миллисекундах). + +``` +# системная инфа +SELECT * +FROM pg_stat_bgwriter; +``` +``` +# Блокировки +SELECT + blocked_locks.pid AS blocked_pid, + blocked_activity.usename AS blocked_user, + blocking_locks.pid AS blocking_pid, + blocking_activity.usename AS blocking_user, + blocking_activity.state AS blocking_state, + blocked_activity.query AS blocked_statement, + blocking_activity.query AS current_statement_in_blocking_process, + blocked_locks.locktype AS blocked_locktype, + blocking_locks.locktype AS blocking_locktype +FROM pg_catalog.pg_locks blocked_locks +JOIN pg_catalog.pg_stat_activity blocked_activity + ON blocked_activity.pid = blocked_locks.pid +JOIN pg_catalog.pg_locks blocking_locks + ON blocking_locks.locktype = blocked_locks.locktype + AND blocking_locks.DATABASE IS NOT DISTINCT FROM blocked_locks.DATABASE + AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation + AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page + AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple + AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid + AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid + AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid + AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid + AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid + AND blocking_locks.pid != blocked_locks.pid +JOIN pg_catalog.pg_stat_activity blocking_activity + ON blocking_activity.pid = blocking_locks.pid +WHERE NOT blocked_locks.GRANTED; +``` +``` +EXPLAIN ANALYZE +SELECT <ваш_запрос>; +``` +``` +SELECT pg_terminate_backend(pid) +FROM pg_stat_activity +WHERE pid = ; +``` \ No newline at end of file diff --git a/docker/DOCKER.MD b/docker/DOCKER.MD index 4b5f737..025f1b5 100644 --- a/docker/DOCKER.MD +++ b/docker/DOCKER.MD @@ -14,4 +14,11 @@ - BLOCK I/O - Объем операций ввода/вывода на диске. - PIDS - Количество процессов внутри контейнера. -- `docker info` \ No newline at end of file +- `docker info` + +- `docker volume ls` +- `docker volume inspect ` +- `docker inspect | grep -i mount` +- `docker inspect | grep -i volumes` +- `docker port ` +- `docker inspect | grep -i port` \ No newline at end of file diff --git a/docker/NOTES.MD b/docker/NOTES.MD index aa16f92..a0c0180 100644 --- a/docker/NOTES.MD +++ b/docker/NOTES.MD @@ -71,4 +71,47 @@ ENTRYPOINT ["sh", "-c", "echo $MY_VAR"] ``` ENTRYPOINT ["nginx", "-g"] CMD ["daemon off;"] +``` + +--- +``` +key: | + Первая строка + Вторая строка + Третья строка +``` +Результат +``` +Первая строка +Вторая строка +Третья строка +``` + +``` +key: > + Первая строка + Вторая строка + Третья строка +``` +Результат +``` +Первая строка Вторая строка Третья строка +``` +``` +key: > + Первая строка + Вторая строка +``` +Результат +``` +Первая строка Вторая строка\n +``` +``` +key: >- + Первая строка + Вторая строка +``` +Результат +``` +Первая строка Вторая строка ``` \ No newline at end of file diff --git a/linux/COMMANDS.MD b/linux/COMMANDS.MD index d368b5e..8a7ed39 100644 --- a/linux/COMMANDS.MD +++ b/linux/COMMANDS.MD @@ -139,6 +139,7 @@ APT работает поверх более низкоуровневого ин tar -xvfz backup.tar.gz /var/www ``` - `sudo tar -zxvf apache-activemq-6.1.3-bin.tar.gz -C /opt` - распаковать в каталог +- `tar xvf apache-tomcat-9.0*tar.gz -C /opt/_Tomcat/application1-8080 --strip-components=1` - каталог apache-tomcat-9.0* не будет создан `dmesg -T` - логи ядра системы ### Система @@ -258,3 +259,7 @@ mount [OPTIONS] - `lsscsi` - отображает устройства, подключенные через интерфейс SCSI - `cp /etc/fstab{,.bkp}` == `cp /etc/fstab /etc/fstab.bkp` + + +- `grep -A 10 <файл>` - вывести 10 строк после найденного файла +- `htop -p ` - процесс на таком-то порту diff --git a/vebsrv/haproxy/HAPROXY.MD b/vebsrv/haproxy/HAPROXY.MD index fdce4d1..951ea91 100644 --- a/vebsrv/haproxy/HAPROXY.MD +++ b/vebsrv/haproxy/HAPROXY.MD @@ -1,4 +1,26 @@ ``` haproxy -f /etc/haproxy/haproxy.cfg -c - тестируем systemctl reload haproxy - применяем -``` \ No newline at end of file +``` +--- + +`errorpage <код_ошибки> `: + +`errorpage 503 http://example.com/error.html` + +--- + + +`errorfile <код_ошибки> <путь_к_файлу>`: + + `errorfile 503 /etc/haproxy/errors/503.http` + +Не требует перенаправления клиента, вся обработка осуществляется на уровне HAProxy + +--- + +`global`: Настраивает поведение и характеристики самого HAProxy (например, логирование, процессы, ресурсы). + +`defaults`: Упрощает конфигурацию, задавая параметры по умолчанию для всех фронтендов и бэкендов, чтобы избежать повторения одинаковых директив. + +--- \ No newline at end of file diff --git a/vebsrv/nginx/NGINX.MD b/vebsrv/nginx/NGINX.MD index 7c06774..80cd85d 100644 --- a/vebsrv/nginx/NGINX.MD +++ b/vebsrv/nginx/NGINX.MD @@ -125,3 +125,32 @@ http { include /etc/nginx/sites-enabled/*; } ``` + +--- + +`error_page 500 502 503 504 /50x.html;` + +--- + +``` +upstream server-group { + server srv-server1.bft.local:8080; + server srv-server2.bft.local:8080; + keepalive 60; +} +``` +--- +``` +location / { + return 301 https://srvname.test.srv/app; +} +``` +`return [];` + +``` +error_page 500 502 503 504 = @custom_error; +location @custom_error { + return 302 http://example.com/error-page; +} +``` +--- \ No newline at end of file diff --git a/windows/WINDOWS.MD b/windows/WINDOWS.MD new file mode 100644 index 0000000..59e87e8 --- /dev/null +++ b/windows/WINDOWS.MD @@ -0,0 +1,32 @@ + +##### Как посмотреть SWAP ? + +- `Win+R` +- `sysdm.cpl` +- Дополнительно -> Быстродействие (параметры) -> Дополнительно -> Витульная память + +--- + +##### Как посмотреть блочные устройства RAM ? + +- `Get-WmiObject Win32_PhysicalMemory | Format-Table Manufacturer, Capacity, Speed, PartNumber, DeviceLocator` + +- `Get-WmiObject Win32_PhysicalMemory | Select-Object Manufacturer, @{Name="Capacity(GB)";Expression={[math]::Round($_.Capacity / 1GB, 2)}}, Speed, PartNumber, DeviceLocator | Format-Table` - в Gb + +--- + +##### Работа с переменными среды + +- `Win+R` +- `sysdm.cpl` +- Дополнительно -> Переменные среды + + +--- + +##### Как расширить диск + +- `Win+R` +- `diskmgmt.msc` + +`AOMEI Partition Assistant` - для работы с дисками \ No newline at end of file