По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Производительность приложений может оказаться решающим показателем для многих предприятий. Если уж на то пошло, то стоимость размещения серверного оборудования напрямую влияет на ваш чистый доход. Именно поэтому если вы будете использовать инструменты профилирования производительности для отладки запускаемого кода, вы сможете в итоге сэкономить ваши деньги.  На что стоит обратить внимание «Узкое место» - это любая медленно работающая часть вашего приложения, которая замедляет остальную часть, которая работает быстрее, прямо как крышка на бутылке с водой или узкая дорога, которая мешает движению транспорта. Абсолютно любой код, который вы пишете, с большей долей вероятности имеет узкие места, и неважно, маленькие они или большие, вы в любом случае можете использовать инструменты профилирования производительности, чтобы их найти.  Все программы разные, но, как правило, страдают от одних и тех же проблем: Функции вызываются слишком часто (кэширование или планирование могут уменьшить количество вызовов). Код блокировки ввода-вывода, обычно сюда относится синхронный доступ к диску, но иногда и чрезмерное использования памяти. Большое количество циклов с затратными методами. Длительное время запуска, особенно в JIT-компилируемых языках. Нецелесообразное выделение памяти, особенно при работе программы сборки мусора.  Области, которые выиграют от распараллеливания или асинхронного программирования.  При проверке вашего кода с помощью профилировщика вы сможете выявить любые из них. Даже если у вашего приложения нет какого-то серьезного заметного узкого места, в любом случае даже минимальный процент улучшения поспособствует тому, что ваше приложение будет работать быстрее и эффективнее. А увеличение скорости работы хотя бы на несколько процентов, может в перспективе привести к значительным результатам.  Кроме того, есть вероятность, что узким местом вашего приложения может оказаться не серверный код, а его расположение в вашей общей сети. Например, у вас есть API, который подключается к медленной базе данных. И здесь не имеет значения, насколько быстро работает ваш веб-сервер, если он всегда долго ждет результатов. Профилировщики производительности могут помочь решить проблемы только в рамках вашего кода, но никак не в общей сетевой структуре.  Как работает профилирование? Инструменты профилирования производительности немного отличны от инструментов отладки. IDE использует такие инструменты отладки, как точки останова и инспектирование, для тестирования и решения проблем в процессе разработки. Профилировщики обычно работают, предполагая, что вы не знаете, в чем заключается проблема, и хотите  профилировать код целиком , чтобы ее выявить. Профилировщик подключается к вашему приложению и с помощью высокоточного таймера отслеживает, какие функции работают дольше всего. Спустя какое-то время у вас будет достаточное количество данных, чтобы понять причину проблемы.  Большая часть профилировщиков представляют данные в виде стека, отсортированного по «потребителям» с наибольшим временем. Чаще всего в профилировщике используют Flame graph, который наглядно отображает разбиение всей истории вызовов программы.  Выбор определенного инструмента или метода зависит от того, для какого языка программирования или для какой среды выполнения кода вы профилируете, и от того, требуется ли вам профилирование приложения в производственных средах или нет, но в общих чертах идея одна и та же.  Так как каждый профилировщик должен быть интегрирован в исполняемый код, то вам необходимо будет загрузить профилировщик для языка, который использует ваше приложение. Некоторые из них проще в использовании, нежели другие, особенно это касается таких языков, как C# и Java. Профилировщик проще внедрить в приложение, которое использует именно эти языки, а не компилируемые.  Многие IDE имеют инструменты профилирования, которые встроены поверх стандартного набора инструментов отладки. Их вы также можете использовать. Например, Visual Studio может профилировать производительность и использование памяти во многих приложениях. Java –  JProfiler , IDEA/Eclipse/Netbeans IDEs Python –  cProfiler ,  Palanteer JavaScript –  Chrome DevTools C# –  dotTrace , Visual Studio IDE C, C++ –  Orbit  Если вы уже примерно знаете, что может занимать времени больше, чем положено, то вы всегда можете воспользоваться библиотекой, которая имеет в своем арсенале секундомер, для того, чтобы провести оценку производительности.  Например, Benchmark.NET может проводить высокоточные тестирования различных функций и, как правило, используется для сравнения различных алгоритмов. Также можно использовать обычный класс Stopwatch для какого-то фрагмента кода, который вы хотите протестировать.  Использование профилировщика производительности В этом руководстве мы покажем, как использовать dotTrace. Это полнофункциональный профилировщик производительности для приложений платформы .NET, в котором есть большая часть инструментов, которые есть и в других профилировщиках. Если вы профилируете код, написанный не на C#, то вам, скорее всего, потребуется другое приложение, но общий принцип остается тем же.  Открыв приложение, вы можете подключиться к запущенным .NET процессам или настроить свою собственную конфигурацию запуска для того, чтобы вы могли запускать приложение прямо из dotTrace. Запуск приложения непосредственно из профилировщика может оказаться довольно полезным, если вы пытаетесь устранить проблему, связанную с медленным запуском приложения.  Как только вы запустите приложение, профилировщик начнет собирать данные. Он может работать столько, сколько вы захотите, а для того, чтобы открыть анализ за накопленный период времени, вам нужно просто нажать «Get Snapshot and Wait».  Как только он откроется, вы увидите большое количество графиков рядом со стеком и деревом вызовов, которые, и, скорее всего, они будут нечитабельными. Если вы видите много всего, связанного с потоками, блокировками и ожиданием, то это, скорее всего, потому, что вам нужно оценить «основной поток».  Профилировщик перехватывает все потоки, которые часто используются для фоновых задач и которые простаивают в течение длительного периода времени. Несмотря на то, что это может говорить о проблемах с блокировкой ввода-вывода, здесь все куда более неоднозначно, чем вы можете себе представить, и это действительно зависит от того, какие действия выполняет поток.  dotTrace также имеет функцию фильтрации кода с точки зрения области, в которой он работает. Для этого используются фильтры «Subsystems» слева. Там можно найти системный код (system code), машинный код (native code) и другие запаздывающие области, такие как отражение (reflection), коллекции (collections), строки (string) и LINQ.  В главном окне вы можете найти Flame graph. Он показывает разбиение всего вашего приложения, начиная с «All Calls» (все вызовы) и разбивая дальше время, которое требуется на выполнение каждого уровня функций. Некоторые из них будут неразрешенными, а некоторые будут слишком малы, чтобы отобразить их на графике, но его можно увеличить до любого масштаба, чтобы увидеть любую функцию и более детальное разбиение стека вызовов.  Еще одна важная функция профилировщиков производительности – это дерево вызовов. Оно показывает вложенное разбиение самых быстрых функций, отсортированных по времени, которое необходимо для их выполнения. Здесь dotTrace также показывает процентное соотношение, то есть долю общего времени, которое данная функция и ее дочерние элементы тратят на свое выполнение.  Затраченное время ЦП не всегда является проблемой, особенно есть речь идет о таком языке, как C#, и если у него есть программы сборки мусора. dotTrace также отслеживает использование и распределение памяти, и его можно использовать для того, чтобы определить, что оказывает нежелательную нагрузку на вашу программу сборки мусора.  
img
Несмотря на то, что системы на базе Linux считаются самыми неуязвимыми, всё же существуют риски, к которым нужно относиться серьезно. Руткиты, вирусы, программы-вымогатели и многие другие вредоносные программы часто могут атаковать и вызывать проблемы на серверах Linux. Независимо от установленной операционной системы, для серверов необходимо принимать повышенные меры безопасности. Крупные корпорации и организации взялись за повышение уровня безопасности и разработали инструменты, которые не только обнаруживают недостатки и вредоносные программы, но и исправляют их и принимают меры для предотвращения разного вида неприятностей. Но такие ПО стоят дорого и не все могут позволить себе их покупать. К счастью, есть инструменты, по приемлемой цене или вовсе бесплатные, которые могут помочь с поиском и устранением уязвимостей. Они могут обнаруживать слабые места в различных разделах сервера на базе Linux. Lynis Lynis это известный инструмент безопасности, который пользуется популярностью среди Linux специалистов. Он также работает на системах на базе Unix и macOS. Это программное обеспечение с открытым исходным кодом, которое с 2007 года распространяется под лицензией GPL. Lynis не требует установки. Можно извлечь его из загруженного пакета или tar архива и запустить. Чтобы получить доступ к полной документации и исходному коду, можно скачать его с Git, Lynis был создан автором Rkhunter Майклом Боеленом. Она имеет две версии: для домашнего пользования и для предприятий. Обе версии показывают отличные результаты. Chkrootkit Как вы уже наверно предположили, chkrootkit утилита для сканирования системы на наличие руткитов. Руткиты это вид вредоносного ПО, который дает неавторизованному пользователю право на вход в систему. Если в парке есть сервера на базе Linux, то руткиты могут стать настоящей проблемой. Chkrootkit одна из самых популярных программ на базе Unix, которая помогает обнаруживать руткиты в системе. Для обнаружения проблем она использует команды "strings" (команда Linux для просмотра содержимого бинарного файла) и "grep". Она может быть запущена как с альтернативной директории, так и внещнего накопителя в случае работы с уже скомпрометированной системой. Различные компоненты chkrootkit занимаются поиском удалённые записи в "wtmp" и "lastlog" файлах, находят записи сниффера или конфигурационных файлов руткитов, а также проверяют на наличие скрытых записей в "/proc" или вызовов программы "readdir". Чтобы использовать эту утилиту нужно скачать последнюю версию, распаковать, скомпилировать и запустить. Rkhunter Майкл Болин разработчик, который создал в 2003 году Rkhunter. Эта очень полезная программа для POSIX систем помогает обнаруживать руткиты и другие уязвимости в системах Linux. Rkhunter тщательно просматривает файлы (скрытые или видимые), каталоги по умолчанию, модули ядра и неправильно настроенные разрешения в поисках слабых мест. После обычной проверки, он сопоставляет результаты с безопасными и правильными записями баз данных и ищет подозрительное ПО. Так как программа полностью написана на Bash, его можно использовать не только на Linux, но и на всех версиях Unix. ClamAV Написанный на C++ ClamAV антивирус с открытым исходным кодом, который помогает выявлять вирусы, трояны и другие виды вредоносных программ. Он полностью бесплатен, ввиду чего очень много пользователей используют его для сканирования персональных данных включая электронную почту на наличие вредоносных файлов любого типа. Он так же может быть использован для сканирования серверов. Изначально он был создан только для Unix. Несмотря на это, есть сторонние версии, которые можно использовать на Linux, BSD, AIX, MacOS, OpenVMS, Solaris. ClamAV регулярно выполняет автоматическое обновление баз данных для выявления самых последних угроз. Есть возможность сканирования в режиме командной строки, а также включает в себя расширяемый многопоточный демон, благодаря чему, существенно увеличивается скорость сканирования. Он проверяет различные типы файлов на наличие уязвимостей. Антивирус поддерживает все типы сжатых файлов включая RAR, Zip, Gzip, Tar, Cabinet, OLE2, CHM, SIS format, BinHex и почти все типы почтовых систем. LMD Linux Malware Detect LMD другой очень популярный продукт для Linux систем, специально разработанный для часто встречающихся угроз. Как и другие подобные продукты для поиска вредоносных программ и руткитов, LMD использует базу сигнатур для выявления и прекращения работы любого вредоносного кода. LMD не ограничивается собственными базами сигнатур. Для лучшего поиска он может использовать базы ClamAV и Team Cymru. Для заполнения своих баз, LMD собирает данные об уязвимостях на пограничных системах обнаружения угроз. Тем самым он генерирует новые сигнатуры для вредоносных ПО, которые активно эксплуатируются в атаках. Radare2 Radare2 (R2) фреймворк для анализа и реверс-инжиниринга двоичных файлов с превосходными возможностями обнаружения. Он может выявить заражённые файлы, даёт пользователю инструменты для управления ими, нейтрализует потенциальные угрозы. Фереймворк использует NoSQL базу sdb. Исследователи безопасности и разработчики ПО предпочитают эту программу за возможность отличного визуального представления данных. Одной из отличительных особенностей Radare2 является то, что пользователь не должен использовать командную строку для выполнения таких задач, как статический/динамический анализ и использование программного обеспечения. Рекомендуется для любого типа исследований по бинарным данным. OpenVAS Open Vulnarability Assessment System или OpenVAS эта размещённая система для сканирования уязвимостей и управления ими. Она предназначена для предприятий любого размера и помогает выявлять невидимые проблемы безопасности в инфраструктуре. Изначально этот продукт был известен под названием GNessUs, до тех пор, пока новый владелец, Greenbone Networks, не сменил название на OpenVAS. Начиная с версии 4.0, OpenVAS предоставляет непрерывное обновление Сетевой базы Тестирования Уязвимостей обычно менее чем за 24 часа. На июнь 2016 система имеет больше 47 тысяч баз. Эксперты безопасности используют OpenVAS из-за возможности быстрого сканирования. Он также отличается превосходной возможностью конфигурирования. Программы OpenVAS могут использоваться на автономных виртуальных машинах для проведения безопасных исследований вредоносных программ. Его исходный код доступен под лицензией GNU GPL. Многие другие средства обнаружения уязвимостей зависят от OpenVAS - именно поэтому его принимают как важнейшую программу в платформах на базе Linux. REMnux REMNux использует метод обратного-инжиниринга для анализа вирусов. Он может обнаруживать большинство проблем на основе браузера, скрытых в изменённых фрагментах кода JavaScript и апплетах Flash. Он также способен сканировать PDF-файлы и выполнять экспертизу памяти. Средство помогает обнаруживать вредоносные программы внутри папок и файлов, которые сложно проверить с помощью других программ обнаружения вирусов. Он эффективен благодаря своим возможностям декодирования и обратного проектирования. Он может определять свойства подозрительных программ, и, будучи легким, он в значительной степени не обнаруживается интеллектуальными вредоносными программами. Он может использоваться как на Linux, так и на Windows, а его функциональность может быть улучшена с помощью других инструментов сканирования. Tiger В 1992 году Техасский Университет A&M начал работать над Tiger для повышения безопасности компьютеров кампуса. Сегодня же она самая популярная система для Unix-подобных платформ. Уникальность этого решения заключается в том, что оно является не только средством аудита безопасности, но и системой обнаружения вторжений. Программа свободно распространяются под лицензией GPL. Она зависит от средств POSIX, и вместе они могут создать идеальную инфраструктуру, которая может значительно повысить безопасность вашего сервера. Tiger полностью написан на shell - это одна из причин его эффективности. Он подходит для проверки состояния и конфигурации системы, а его многоцелевое использование делает его очень популярным среди людей, использующих инструменты POSIX. Maltrail Maltrail - это система обнаружения трафика, способная обеспечить чистоту трафика вашего сервера и помочь ему избежать любых угроз. Она выполняет эту задачу, сравнивая источники трафика с сайтами в черном списке, опубликованными в Интернете. Помимо проверки сайтов, включенных в черный список, она также использует усовершенствованные эвристические механизмы для обнаружения различных видов угроз. Даже если это необязательная функция, она пригодится, когда вы считаете, что ваш сервер уже подвергся атаке. Эта система имеет особый сенсор, способный обнаруживать трафик сервера, и посылать информацию на сервер Maltrail. Система обнаружения проверяет, достаточно ли безопасен трафик для обмена данными между сервером и источником. YARA Созданная для Linux, Windows и macOS, YARA (Yet Another Ridiculous Acronym) является одним из наиболее важных инструментов, используемых для исследования и обнаружения вредоносных программ. Он использует текстовые или двоичные шаблоны для упрощения и ускорения процесса обнаружения, что упрощает и ускоряет решение задачи. У YARA есть некоторые дополнительные функции, но для их использования необходима библиотека OpenSSL. Даже если у вас нет этой библиотеки, вы можете использовать YARA для базового исследования вредоносных программ с помощью механизма, основанного на правилах. Также его можно использовать в песочнице Cuckoo - песочнице на основе Python, идеальной для проведения безопасных исследований вредоносного программного обеспечения. Как выбрать лучшую утилиту? Все инструменты, о которых мы говорили выше, работают очень хорошо, и когда инструмент популярен в среде Linux, вы можете быть уверены, что его используют тысячи опытных пользователей. Нужно помнить, что каждое приложение обычно зависит от других программ. Например, это касается ClamAV и OpenVAS. Необходимо понять, что нужно вашей системе и в каких компонентах она может иметь уязвимости. Во-первых, используйте легковесный инструмент, чтобы изучить, какой раздел требует внимания. Затем используйте соответствующий инструмент для решения проблемы.
img
Что это вообще такое? Docker Compose является инструментом для определения и запуска контейнерных приложений. С Compose вы получаете возможность настраивать службы используя файл YAML. С помощью одной команды Compose вы создаете и запускаете все службы в соответствии с вашей конфигурацией. Установка начинается с создания каталога проекта: $ mkdir composetest $ cd composetest Создайте файл под названием app.py и вставьте в него следующие данные: import time import redis from flask import Flask app = Flask(__name__) cache = redis.Redis(host='redis', port=6379) def get_hit_count(): retries = 5 while True: try: return cache.incr('hits') except redis.exceptions.ConnectionError as exc: if retries == 0: raise exc retries -= 1 time.sleep(0.5) @app.route('/') def hello(): count = get_hit_count() return 'Hello World! I have been seen {} times. '.format(count) В нашем случае название хоста - redis, который использует порт 6379. Создайте файл под названием needs.txt в каталоге вашего проекта и вставьте его в: flask Redis Теперь следует написать код для файла Dockerfile, содержащий все необходимые переменные для среды разработки. В каталоге вашего проекта создайте файл с именем Dockerfile (файл будет определять среду приложения) и вставьте следующее содержимое: FROM python:3.7-alpine WORKDIR /code ENV FLASK_APP app.py ENV FLASK_RUN_HOST 0.0.0.0 RUN apk add --no-cache gcc musl-dev linux-headers COPY requirements.txt requirements.txt RUN pip install -r requirements.txt COPY . . CMD ["flask", "run"] Определение сервисов осуществляется при создании файла с именем docker-compose.yml в каталоге вашего проекта со следующей информацией: version: '3' services: web: build: . ports: - "5000:5000" redis: image: "redis:alpine" На основании содержания файла происходит запуск двух сервисов: Web и Redis, а в дальнейшем вы можете вносить в этот файл различные БД и иную важную информацию. C помощью команды Compose создайте ваше приложение, после чего из каталога проекта запустите приложение, запустив docker-compose. Вот так: $ docker-compose up Creating network "composetest_default" with the default driver Creating composetest_web_1 ... Creating composetest_redis_1 ... Creating composetest_web_1 Creating composetest_redis_1 ... done Attaching to composetest_web_1, composetest_redis_1 web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) redis_1 | 1:C 17 Aug 22:11:10.480 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo redis_1 | 1:C 17 Aug 22:11:10.480 # Redis version=4.0.1, bits=64, commit=00000000, modified=0, pid=1, just started redis_1 | 1:C 17 Aug 22:11:10.480 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf web_1 | * Restarting with stat redis_1 | 1:M 17 Aug 22:11:10.483 * Running mode=standalone, port=6379. redis_1 | 1:M 17 Aug 22:11:10.483 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128. web_1 | * Debugger is active! redis_1 | 1:M 17 Aug 22:11:10.483 # Server initialized redis_1 | 1:M 17 Aug 22:11:10.483 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled. web_1 | * Debugger PIN: 330-787-903 redis_1 | 1:M 17 Aug 22:11:10.483 * Ready to accept connections Compose извлекает образ Redis, создавая образ для вашего приложения и запускает выбранные службы. В этом случае код копируется в образ во время сборки. Как вам такое? Теперь попробуйте ввести http://localhost:5000/ в браузере, чтобы чекнуть запущенное приложение. Если вы используете Docker для Linux, Docker Desktop для Mac или Docker Desktop для Windows, то теперь веб-приложение должно "смотреть" на порт 5000 на хосте Docker. Введите в своем веб-браузере адрес http://localhost:5000, чтобы увидеть сообщение Hello World. Если не сработает, вы также можете попробовать зайти на http://127.0.0.1:5000. Если вы используете Docker Machine на Mac или Windows, используйте ip MACHINE_VM docker-machine для получения IP-адреса вашего хоста Docker. Затем откройте http://MACHINE_VM_IP:5000 в браузере. Вы должны увидеть сообщение в своем браузере: Hello World! I have been seen 1 times. Переключитесь на другое окно терминала и введите docker image ls, чтобы вывести список локальных образов/контейнеров. Вывод на этом этапе должен показывать redis и web. $ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE composetest_web latest e2c21aa48cc1 4 minutes ago 93.8MB python 3.4-alpine 84e6077c7ab6 7 days ago 82.5MB redis alpine 9d8fa9aa0e5b 3 weeks ago 27.5MB Важно: Вы можете просматривать запущенные контейнеры с помощью Docker Inspect Tag или ID Запустите docker-compose из каталога вашего проекта во втором терминале, либо нажмите CTRL + C в исходном терминале, где приложение уже запущено и отредактируйте файл Compose. Отредактируйте docker-compose.yml в каталоге вашего проекта для внесения той или иной правки в веб-службе version: '3' services: web: build: . ports: - "5000:5000" volumes: - .:/code environment: FLASK_ENV: development redis: image: "redis:alpine" Новый ключ редактирует каталог проекта на хосте внутри контейнера, что позволяет изменять код без необходимости перестраивать весь образ. Ключ среды устанавливает переменную FLASK_ENV, которая сообщает о запуске в режиме разработки и перезагрузке кода при изменении. Важно: этот режим должен использоваться только при разработке. В каталоге проекта введите docker-compose up, чтобы создать приложение с обновленным файлом Compose, и запустите его. $ docker-compose up Creating network "composetest_default" with the default driver Creating composetest_web_1 ... Creating composetest_redis_1 ... Creating composetest_web_1 Creating composetest_redis_1 ... done Attaching to composetest_web_1, composetest_redis_1 web_1 | * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit) … Поскольку код приложения теперь добавляется в контейнер с помощью тома, вы можете вносить изменения в его код и мгновенно просматривать изменения без необходимости перестраивать образ. Измените сообщение в app.py и сохраните его: Hello from Docker!: return 'Hello from Docker! I have been seen {} times. '.format(count) Обновите результат в вашем браузере (нажмите F5 или Ctrl + F5) . Приветствие должно быть обновлено, а счетчик должен увеличиваться. Вы можете поэкспериментировать с другими командами. Если вы хотите запускать свои службы в фоновом режиме, вы можете сделать следующее: docker-compose up and use docker-compose ps to see what is currently running: $ docker-compose up -d Starting composetest_redis_1... Starting composetest_web_1... $ docker-compose ps Name Command State Ports ------------------------------------------------------------------- composetest_redis_1 /usr/local/bin/run Up composetest_web_1 /bin/sh -c python app.py Up 5000->5000/tcp Команда docker-compose run позволяет вам применять одноразовые команды к вашим сервисов. Например, чтобы увидеть, какие переменные среды доступны для веб-службы: $ docker-compose run web env Выполните команду docker-compose –help, чтобы увидеть весь список доступных команд. Если вы запустили Compose с помощью docker-compose up -d, то нужно будет остановить ваши службы после работы с ними, для этого поможет команда ниже:$ docker-compose stop Если хотите полностью уничтожить контейнер, используйте команду down.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59