DevOps | Вопросы собесов
5.21K subscribers
39 photos
825 links
Cайт easyoffer.ru
Реклама @easyoffer_adv
ВП @easyoffer_vp

Тесты t.me/+2P7cpjeyfDVlZjcy
Вакансии t.me/+i5KFWEWJ21hhYWEy
Download Telegram
🤔 Что такое репликасет, деплоймент?

`ReplicaSet` — это контроллер в Kubernetes, который обеспечивает поддержание заданного количества подов для определённого приложения, автоматически создавая или удаляя поды по мере необходимости. `Deployment` — это более высокоуровневый объект, который управляет ReplicaSet, добавляя возможность обновления и отката приложений. Deployment используется для более сложных сценариев развертывания и управления приложениями, таких как автоматические обновления и скейлинг. `ReplicaSet` управляет реплицированием подов, а `Deployment` — жизненным циклом приложения.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
🤔 Что происходит в тот момент, когда вы набираете в браузере, например google.com?

Происходит несколько шагов, чтобы загрузить запрашиваемую веб-страницу. Эти шаги включают преобразование доменного имени в IP-адрес, установление соединения и загрузку содержимого страницы.

🚩Шаги

1⃣Ввод URL и обработка браузером
Браузер проверяет кэш на наличие сохраненной копии страницы.

2⃣DNS-резолвинг
Если IP-адрес не найден, браузер отправляет запрос к DNS-серверу для получения IP-адреса доменного имени google.com. DNS-сервер отвечает с IP-адресом (например, 172.217.10.46).

3⃣Установка TCP-соединения
Браузер устанавливает TCP-соединение с сервером по полученному IP-адресу через трехстороннее рукопожатие (three-way handshake):
1. Клиент отправляет SYN (synchronize) пакет серверу.
2. Сервер отвечает SYN-ACK (synchronize-acknowledge) пакетом.

4⃣Установка HTTPS-соединения (если используется HTTPS)
Если используется HTTPS, устанавливается TLS/SSL соединение для шифрования данных:
1. Клиент и сервер обмениваются сертификатами и ключами.
2. Устанавливается защищенный канал для передачи данных.

5⃣Отправка HTTP-запроса
Браузер отправляет HTTP-запрос на сервер
GET / HTTP/1.1
Host: google.com


6⃣Обработка запроса сервером
Веб-сервер (например, Nginx или Apache) получает запрос и передает его к приложению (например, к веб-приложению Google). Сервер обрабатывает запрос, возможно, обращаясь к базе данных или другим сервисам, и формирует HTTP-ответ.

7⃣Получение HTTP-ответа
Сервер отправляет HTTP-ответ обратно клиенту:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>
<head><title>Google</title></head>
<body>...</body>
</html>


🚩Дополнительные процессы

🟠Кэширование
Браузер может кэшировать ресурсы (CSS, JS, изображения) для ускорения последующих загрузок. Сервер может отправлять заголовки кэширования, такие как Cache-Control и Expires, чтобы указать браузеру, как долго хранить ресурсы.
🟠Асинхронные запросы
Страница может использовать JavaScript для выполнения дополнительных запросов к серверу (AJAX) без перезагрузки страницы.

🚩Подробный пример

1⃣Ввод URL
Пользователь вводит google.com в адресную строку браузера.

2⃣DNS-резолвинг
Браузер отправляет DNS-запрос и получает ответ
google.com has address 172.217.10.46


3⃣Установка TCP-соединения
Браузер и сервер выполняют трехстороннее рукопожатие:
1. Клиент: SYN
2. Сервер: SYN-ACK
3. Клиент: ACK

4⃣Установка HTTPS-соединения
Браузер и сервер обмениваются сертификатами и устанавливают защищенный канал.

5⃣Отправка HTTP-запроса
Браузер отправляет запрос
GET / HTTP/1.1
Host: google.com


6⃣Получение HTTP-ответа
Сервер отвечает
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234
<html>
<head><title>Google</title></head>
<body>...</body>
</html>


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍143
🤔 Что такое мониторинг, какие инструменты можно использовать?

Мониторинг — это процесс наблюдения за состоянием инфраструктуры и приложений для обеспечения их работоспособности и своевременного реагирования на сбои. Система мониторинга собирает метрики, логи и события для анализа и визуализации. Для мониторинга можно использовать инструменты, такие как Prometheus для сбора метрик, Grafana для визуализации, и ELK stack для логирования. Эти инструменты помогают отслеживать производительность и стабильность системы, а также выявлять аномалии в работе.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 Когда к nginx идёт более 1024 соединений, он падает, что делать?

🚩Шаги

1⃣Увеличение лимита открытых файлов
Linux системам часто по умолчанию разрешается иметь открытыми не более 1024 файловых дескрипторов на процесс. Это число может быть увеличено. Проверка текущих лимитов:
Используйте команду ulimit для проверки текущих лимитов:
ulimit -n


Чтобы увеличить лимит, отредактируйте файл /etc/security/limits.conf и добавьте или измените следующие строки. Перезапустите терминал или перезагрузите систему для применения изменений.
* soft nofile 65536
* hard nofile 65536


2⃣Настройка системных параметров
Отредактируйте файл /etc/sysctl.conf и добавьте следующие строки
fs.file-max = 2097152


Примените изменения командой
sudo sysctl -p


3⃣Настройка Worker Connections в Nginx
Убедитесь, что в конфигурации Nginx указано достаточно соединений на один процесс. Откройте файл конфигурации Nginx (обычно /etc/nginx/nginx.conf) и настройте параметры worker_connections и worker_rlimit_nofile.
worker_rlimit_nofile 65536;

events {
worker_connections 65536;
}


4⃣Проверка системных ограничений
Отредактируйте файл /etc/security/limits.conf и добавьте или измените строки для увеличения максимального количества процессов
* soft nproc 65536
* hard nproc 65536


Отредактируйте файл /etc/sysctl.conf и добавьте следующие строки:
kernel.pid_max = 4194303


Примените изменения:
sudo sysctl -p


5⃣Перезапуск Nginx
После внесения всех изменений перезапустите Nginx для применения новых настроек:
sudo systemctl restart nginx


🚩Пример изменения лимита

Редактирование /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536


Применение изменений sysctl
sudo sysctl -w fs.file-max=2097152   


🚩Пример настройки Nginx

1⃣Редактирование /etc/nginx/nginx.conf
worker_rlimit_nofile 65536;

events {
worker_connections 65536;
}


2⃣Перезапуск Nginx
sudo systemctl restart nginx   


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
🤔 Что такое pod?

Pod — это основная единица развертывания в Kubernetes, которая представляет собой один или несколько контейнеров, работающих вместе и разделяющих общие ресурсы, такие как сеть и хранилище. Каждый pod получает уникальный IP-адрес в кластере и может включать контейнеры, которые взаимодействуют друг с другом. Pod является недолговечным и может быть перезапущен или пересоздан при сбое, поэтому Kubernetes автоматически управляет их состоянием. Pod помогает упрощать управление контейнерами в кластере.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥5
🤔 Какие могут быть лимиты у nginx и со стороны чего?

Как и любая другая серверная программа, может сталкиваться с различными лимитами, которые могут ограничивать его производительность и возможности. Эти лимиты могут исходить как от самой конфигурации Nginx, так и от операционной системы и оборудования.

🚩Лимиты со стороны Nginx

🟠worker_connections
Определяет максимальное количество соединений, которые каждый рабочий процесс (worker) может обслуживать одновременно. Конфигурация: /etc/nginx/nginx.conf
events {
worker_connections 1024;
}


🟠worker_processes
Определяет количество рабочих процессов. Обычно рекомендуется настроить на количество ядер процессора. Конфигурация: /etc/nginx/nginx.conf
worker_processes auto;     


🟠client_max_body_size
Определяет максимальный размер тела запроса (например, загрузка файлов). Конфигурация: /etc/nginx/nginx.conf или в контексте сервера/локации.
http {
client_max_body_size 10m;
}


🟠client_body_buffer_size
Размер буфера для хранения тела запроса клиента. Конфигурация: /etc/nginx/nginx.conf
http {
client_body_buffer_size 8k;
}


🟠limit_conn_zone и limit_conn
Используются для ограничения количества соединений от одного клиента. Конфигурация: /etc/nginx/nginx.conf
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location / {
limit_conn addr 10;
}
}
}


🟠limit_req_zone и limit_req
Используются для ограничения количества запросов от одного клиента в единицу времени (например, для защиты от DDoS-атак). Конфигурация: /etc/nginx/nginx.conf
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one burst=5;
}
}
}


🚩Лимиты со стороны операционной системы

🟠Максимальное количество открытых файлов
Linux системам по умолчанию разрешается иметь ограниченное количество открытых файловых дескрипторов на процесс. Проверка текущих лимитов
ulimit -n     


Увеличение лимитов
В /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536


🟠Системные лимиты на количество файлов
В /etc/sysctl.conf
fs.file-max = 2097152     


Применение изменений
sudo sysctl -p     


🟠TCP-параметры:
Максимальное количество полуподключений.
В /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 4096


Применение изменений
sudo sysctl -p     


🚩Лимиты со стороны оборудования

🟠Производительность процессора
Количество ядер и тактовая частота процессора могут влиять на количество одновременных соединений и общую производительность Nginx.
🟠Объем оперативной памяти
Недостаток оперативной памяти может привести к увеличению времени отклика и сбоям при большом количестве запросов.
🟠Скорость дисковой системы
Высокая нагрузка на диск может замедлить обработку запросов, особенно при работе с большими файлами или логами.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🤔 Что такое неймспейс?

Неймспейс (namespace) в Kubernetes — это механизм логической изоляции ресурсов кластера, позволяющий разделять рабочие окружения или группы ресурсов между различными командами или проектами. Неймспейсы позволяют управлять доступом, квотами на ресурсы и ограничивать видимость ресурсов между разными частями системы. Это упрощает организацию и управление ресурсами в больших кластерах, где различные приложения и среды должны быть отделены друг от друга. Неймспейсы делают управление кластером более гибким и масштабируемым.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6
🤔 Как узнать ip-адрес какого-нибудь сайта?

🚩Методы

🟠Использование команды `ping`
Команда ping отправляет пакеты ICMP на указанный домен и отображает IP-адрес.
ping google.com


Пример вывода
В этом примере IP-адрес google.com142.250.190.78.
PING google.com (142.250.190.78): 56 data bytes
64 bytes from 142.250.190.78: icmp_seq=0 ttl=115 time=14.3 ms


🟠Использование команды `nslookup`
Команда nslookup запрашивает DNS-сервер для получения информации о домене, включая IP-адрес.
nslookup google.com


Пример вывода
Server:         8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: google.com
Address: 142.250.190.78


🟠Использование команды `dig`
Команда dig (domain information groper) запрашивает DNS-сервер для получения информации о домене. Она более гибкая и детализированная, чем nslookup.
dig google.com


Пример вывода
; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49142
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 299 IN A 142.250.190.78

;; Query time: 21 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jul 26 12:00:00 UTC 2024
;; MSG SIZE rcvd: 55


🟠Использование команды `host`
Команда host — еще один способ запроса DNS для получения IP-адреса домена.
host google.com


Пример вывода
google.com has address 142.250.190.78
google.com has IPv6 address 2607:f8b0:4005:809::200e


🟠Использование онлайн-сервисов
Существует множество онлайн-сервисов, которые позволяют определить IP-адрес веб-сайта.
[WhatIsMyIPAddress](https://www.whatismyipaddress.com/)
[DNSWatch](https://www.dnswatch.info/)
[IP-Checker](https://ipinfo.info/html/ip_checker.php)

🚩Примеры использования

ping
ping example.com

PING example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=56 time=12.3 ms


nslookup
nslookup example.com

Server:         8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: example.com
Address: 93.184.216.34


dig
dig example.com

; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32477
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com. IN A

;; ANSWER SECTION:
example.com. 299 IN A 93.184.216.34

;; Query time: 21 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Fri Jul 26 12:00:00 UTC 2024
;; MSG SIZE rcvd: 55


host
host example.com

example.com has address 93.184.216.34


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
🤔 Что такое helm, helm charts?

Helm — это менеджер пакетов для Kubernetes, который упрощает установку и управление приложениями. Helm Charts — это пакеты предварительно настроенных ресурсов Kubernetes, которые можно развертывать как единые приложения. Charts описывают набор связанных ресурсов Kubernetes и включают в себя все необходимые зависимости и параметры конфигурации.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥101
🤔 Что слышали про ulimits?

Это команда в Unix-подобных операционных системах, которая используется для ограничения ресурсов, доступных оболочке и запущенным из нее процессам. С помощью ulimit можно устанавливать и проверять различные лимиты, такие как количество открытых файлов, размер стека, размер файлов и т. д. Эти лимиты помогают предотвратить исчерпание системных ресурсов отдельными процессами и улучшить безопасность и стабильность системы.

🚩Параметры

🟠-n
Максимальное количество открытых файлов (file descriptors).
🟠-u
Максимальное количество процессов, которые может создать пользователь.
🟠-f
Максимальный размер файлов, которые могут быть созданы пользователем (в блоках).
🟠-s
Размер стека (stack size).
🟠-c
Размер файлов core dump.
🟠-v
Максимальный объем виртуальной памяти (virtual memory size).
🟠-l
Максимальный объем памяти, который может быть заблокирован в оперативной памяти (locked-in-memory size).

🚩Примеры использования

1⃣Проверка текущих лимитов
ulimit -a


Вывод этой команды покажет все текущие лимиты для текущего пользователя и сеанса
core file size          (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 63691
max locked memory (kbytes, -l) 16384
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 63691
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited


2⃣Установка лимитов
🟠На количество открытых файлов
Это установит лимит на 4096 открытых файлов для текущей сессии.
ulimit -n 4096


🟠На размер файлов
Это установит максимальный размер файла в 1 ГБ (1048576 блоков по 1024 байта).
ulimit -f 1048576


🟠На размер стека
Это установит размер стека в 16 МБ.
ulimit -s 16384


3⃣Постоянная настройка лимитов
Чтобы установить лимиты на постоянной основе, нужно отредактировать конфигурационные файлы, такие как /etc/security/limits.conf и /etc/pam.d/common-session.
*               soft    nofile          4096
* hard nofile 65536
* soft nproc 4096
* hard nproc 8192


🚩Примеры использования в скриптах

Вы можете включить ulimit в ваши скрипты для временного изменения лимитов ресурсов перед выполнением команд
#!/bin/bash
ulimit -n 4096
ulimit -s 16384
# Выполнение команд
./myprogram


🚩Важные замечания

🟠Root и обычные пользователи
Root может устанавливать более высокие лимиты, чем обычные пользователи. Ограничения могут варьироваться между различными системами и дистрибутивами Linux.
🟠Применение изменений
Изменения, сделанные с помощью команды ulimit, применяются только к текущему сеансу и процессам, запущенным из него.
🟠Максимальные значения
Лимиты могут иметь максимальные значения, заданные ядром системы. Например, максимальный лимит для количества открытых файлов может быть установлен с помощью параметра fs.file-max в /etc/sysctl.conf.

Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1
🤔 Чем отличаются HTTP и HTTPS?

HTTP (HyperText Transfer Protocol) — это протокол передачи данных, используемый для загрузки веб-страниц. HTTPS (HTTP Secure) — это расширение HTTP, которое добавляет слой шифрования (SSL/TLS), обеспечивая безопасную передачу данных между клиентом и сервером. HTTPS защищает от прослушивания и манипуляций данными.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🤔 Как поднять лимиты nginx?

Можно увеличить несколько лимитов, связанных как с самой конфигурацией Nginx, так и с настройками операционной системы.

🚩Шаги

🟠Увеличение лимита открытых файлов

1⃣Проверка текущих лимитов
ulimit -n


2⃣Увеличение лимитов для пользователя
* soft nofile 65536
* hard nofile 65536


3⃣Применение изменений
Перезапустите терминал или перезагрузите систему, чтобы изменения вступили в силу.

4⃣ Установка лимитов для процессов Nginx
LimitNOFILE=65536

sudo systemctl daemon-reload


🟠Настройка параметров Nginx

1⃣Редактирование основного конфигурационного файла Nginx
Откройте файл конфигурации Nginx (обычно /etc/nginx/nginx.conf) и настройте следующие параметры:

worker_rlimit_nofile: Установите максимальное количество открытых файлов.
worker_rlimit_nofile 65536;


worker_connections: Увеличьте количество соединений, которые каждый рабочий процесс может обрабатывать одновременно.
events {
worker_connections 65536;
}


worker_processes: Настройте количество рабочих процессов. Обычно это число соответствует количеству ядер процессора.
worker_processes auto;


🟠Настройка системных параметров

1⃣Увеличение лимита открытых файлов в системе
Отредактируйте файл /etc/sysctl.conf и добавьте строку
fs.file-max = 2097152


Примените изменения
sudo sysctl -p


2⃣Настройка TCP-параметров
Отредактируйте файл /etc/sysctl.conf и добавьте строки
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 4096


Примените изменения
sudo sysctl -p


🟠Перезагрузка Nginx
После внесения всех изменений перезагрузите Nginx для их применения:
sudo systemctl restart nginx


Пример конфигурационного файла Nginx
user nginx;
worker_processes auto;
worker_rlimit_nofile 65536;

events {
worker_connections 65536;
}

http {
include mime.types;
default_type application/octet-stream;

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

include /etc/nginx/conf.d/*.conf;
}


🚩Проверка изменений

Проверка лимита открытых файлов
ulimit -n


Проверка параметров sysctl
sysctl fs.file-max
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_max_syn_backlog


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
🤔 Что такое ELK?

ELK стек — это сочетание трех открытых инструментов Elasticsearch, Logstash и Kibana, которые вместе используются для индексации, анализа и визуализации логов в реальном времени. Elasticsearch используется как поисковая и аналитическая движущая сила, Logstash — для обработки и передачи данных, а Kibana — для визуализации данных из Elasticsearch.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥71
🤔 Как и где посмотреть логи какого-нибудь сервиса?

Обычно хранятся в каталоге /var/log. Также многие современные дистрибутивы используют систему журналирования systemd для управления и просмотра логов.

🚩Способы просмотра

🟠Просмотр логов в /var/log
Каталог /var/log содержит логи большинства системных сервисов и приложений.

Логи системных сообщений
/var/log/syslog: Содержит общие системные логи. /var/log/messages: Содержит общие системные сообщения (не во всех дистрибутивах).
cat /var/log/syslog
less /var/log/syslog
tail -f /var/log/syslog


Логи конкретных сервисов
Apache: /var/log/apache2/ или /var/log/httpd/ Логи доступа: /var/log/apache2/access.log или /var/log/httpd/access_log Логи ошибок: /var/log/apache2/error.log или /var/log/httpd/error_log
tail -f /var/log/apache2/access.log
tail -f /var/log/apache2/error.log


Nginx: /var/log/nginx/ Логи доступа: /var/log/nginx/access.log Логи ошибок: /var/log/nginx/error.log
tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log


MySQL: /var/log/mysql/ или /var/log/mysqld.log
tail -f /var/log/mysql/error.log 


SSH: /var/log/auth.log или /var/log/secure
tail -f /var/log/auth.log 


🟠Использование `journalctl` для системных логов
journalctl — это утилита для просмотра и управления журналами systemd. Она позволяет фильтровать логи по различным критериям, таким как время, сервис и уровень логирования.

Основные команды journalctl
Просмотр всех журналов
journalctl  



Логов конкретного сервиса
journalctl -u nginx.service  


Последних логов и продолжение просмотра в реальном времени
journalctl -f
journalctl -u nginx.service -f


Логов за определённый период
journalctl --since "2024-07-25 12:00:00" --until "2024-07-25 13:00:00" 


Логов с определённым уровнем логирования
journalctl -p err
journalctl -p warning


🚩Примеры использования

🟠Просмотр логов Apache
Логи доступа
tail -f /var/log/apache2/access.log  


Логи ошибок
tail -f /var/log/apache2/error.log 


🟠Просмотр логов Nginx
Логи доступа
tail -f /var/log/nginx/access.log


Логи ошибок
tail -f /var/log/nginx/error.log  


🟠Использование `journalctl` для просмотра логов Nginx
Все логи Nginx
journalctl -u nginx.service  


Последние логи Nginx в реальном времени
journalctl -u nginx.service -f  


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🤔 Что такое и нужен ли swap?

Swap (файл подкачки) — это область на жестком диске, используемая операционной системой для временного хранения данных из оперативной памяти (RAM), когда она заполнена. Swap может помочь системе справляться с перегрузкой памяти, но использование swap может замедлить работу системы, так как доступ к данным на жестком диске медленнее, чем к RAM.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
🤔 Как открывается смотреть огромный лог размером 4-5 Гб?

Работа с большими логами может быть сложной, так как стандартные текстовые редакторы и команды могут не справляться с такими объемами данных.

🟠Использование команды `less`
Это команда для постраничного просмотра файлов, которая загружает файл по частям, что позволяет работать с большими файлами без их полного открытия в памяти. Навигация:
Space: следующая страница
b: предыдущая страница
G: перейти в конец файла
g: перейти в начало файла
/pattern: поиск по файлу
less /path/to/large-log-file.log


🟠Использование команды tail
Это команда для просмотра последних строк файла. Она полезна для мониторинга новых записей в реальном времени.
tail -n 1000 /path/to/large-log-file.log


Для непрерывного мониторинга
tail -f /path/to/large-log-file.log


🟠Использование команды `head`
Это команда для просмотра первых строк файла.
head -n 1000 /path/to/large-log-file.log


🟠Использование команды `awk`
Это мощный текстовый процессор, который может быть использован для фильтрации и обработки лог-файлов.
awk '/ERROR/' /path/to/large-log-file.log


🟠Использование команды tail
Это команда для поиска по файлу. Она позволяет быстро находить строки, содержащие определенные паттерны.
grep "ERROR" /path/to/large-log-file.log


Для просмотра строк до и после найденного паттерна
grep -C 5 "ERROR" /path/to/large-log-file.log


🟠Использование команды `split`
Это команда для разбиения больших файлов на более мелкие части. Разбиение файла на части размером по 500 МБ
split -b 500M /path/to/large-log-file.log part_


🟠Использование `Sublime Text` или других редакторов с поддержкой больших файлов
Некоторые текстовые редакторы, такие как Sublime Text, поддерживают работу с большими файлами. Они могут быть полезны для просмотра и редактирования логов.

🟠Использование специализированных утилит
GoAccess: интерактивный просмотр логов веб-сервера в режиме реального времени.
goaccess /path/to/access.log -c


lnav: интерактивный просмотрщик логов, который автоматически определяет формат логов и предоставляет удобную навигацию и поиск.
lnav /path/to/large-log-file.log


🚩Примеры использования

Использование less для просмотра большого лог-файла
less /path/to/large-log-file.log


Использование grep для поиска по логу
grep "ERROR" /path/to/large-log-file.log


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
🤔 В чём разница между TCP и UDP?

TCP (Transmission Control Protocol) — это протокол с установлением соединения, обеспечивающий надежную, упорядоченную и безошибочную передачу данных. UDP (User Datagram Protocol) — это более простой протокол без установления соединения, который позволяет передавать данные без гарантий доставки, порядка или проверки ошибок. TCP используется для задач, где важна надежность, а UDP — для задач, требующих максимальной скорости передачи.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍181
🤔 Что такое cherry pick?

Это команда в системе контроля версий Git, которая позволяет выбрать отдельные коммиты из одной ветки и применить их к другой ветке. Это полезно, когда вы хотите перенести конкретные изменения (коммиты) в текущую ветку, не выполняя слияние всей ветки.

🚩Когда используется

🟠Применение отдельных изменений
Когда нужно перенести конкретные исправления или функции из одной ветки в другую, не сливая все изменения из исходной ветки.
🟠Быстрое исправление ошибок
Когда найденное исправление в одной ветке нужно срочно применить в другой, например, из ветки разработки в ветку релиза.
🟠Избежание сложного слияния
Когда слияние всей ветки может привести к конфликтам или нежелательным изменениям, cherry-pick позволяет аккуратно перенести только нужные коммиты.

🚩Примеры использования

🟠Простого `cherry-pick`
Перенос одного коммита из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick коммита
git cherry-pick <commit-hash>


🟠Применения нескольких коммитов
Перенос нескольких коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick нескольких коммитов
git cherry-pick <commit-hash-1> <commit-hash-2> <commit-hash-3>


🟠Применения диапазона коммитов
Перенос диапазона коммитов из другой ветки.
# Переключитесь на ветку, куда вы хотите применить изменения
git checkout target-branch

# Выполните cherry-pick диапазона коммитов
git cherry-pick <start-commit-hash>..<end-commit-hash>


🚩Разрешение конфликтов

1⃣Разрешите конфликты в файлах.

2⃣Добавьте изменения в индекс
git add <filename>   


3⃣Завершите процесс cherry-pick
git cherry-pick --continue   


🚩Прерывание

Если вы хотите прервать процесс cherry-pick, можно использовать команду
git cherry-pick --abort


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
🤔 По какой причине inode могут закончиться?

Inode могут закончиться на файловой системе, если создается большое количество мелких файлов. Каждый файл в UNIX-подобных системах использует inode для хранения метаданных. Если файловая система имеет ограниченное количество inode, и все они используются, новые файлы создать будет невозможно, даже если на диске еще есть свободное пространство.

Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥21
🤔 Как отменить последний коммит?

🚩Методы

🟠Отмена последнего коммита с сохранением изменений
Команда git reset с параметром --soft отменяет последний коммит, но оставляет изменения в индексе (staging area), что позволяет вам внести изменения и закоммитить их снова. HEAD~1: указывает на один коммит назад от текущего HEAD. --soft: сохраняет изменения в индексе.
git reset --soft HEAD~1


🟠Отмена последнего коммита с сохранением изменений в рабочей директории
Команда git reset с параметром --mixed отменяет последний коммит и сбрасывает индекс, но сохраняет изменения в рабочей директории. Это позволяет вам внести изменения и добавить их в индекс заново. --mixed: сбрасывает индекс, но сохраняет изменения в рабочей директории (по умолчанию).
git reset --mixed HEAD~1


🟠Отмена последнего коммита и изменений
Команда git reset с параметром --hard отменяет последний коммит и удаляет все изменения как из индекса, так и из рабочей директории. Это действие необратимо и должно использоваться с осторожностью. `--hard`: сбрасывает индекс и рабочую директорию.
git reset --hard HEAD~1


🟠Отмена последнего коммита с помощью `git revert`
Команда git revert создает новый коммит, который отменяет изменения, внесенные последним коммитом. Это сохраняет историю изменений и является более безопасным способом отмены коммита, особенно в публичных ветках. `HEAD`: указывает на последний коммит.
git revert HEAD


🚩Примеры использования

🟠Отмена последнего коммита с сохранением изменений в индексе
git reset --soft HEAD~1    


Проверка состояния:
git status    


🟠Отмена последнего коммита с сохранением изменений в рабочей директории
git reset --mixed HEAD~1    


Проверка состояния
git status    


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31