Форум программистов, компьютерный форум, киберфорум
nginx
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
2 / 1 / 1
Регистрация: 27.01.2018
Сообщений: 39
1

Многопоточность FastCGI

05.02.2021, 21:12. Показов 990. Ответов 1

Author24 — интернет-сервис помощи студентам
Доброго всем утра, дня, вечера и ночи!

Есть ситуация. На сервере (Debian, nginx) для отдельной папки настроено использование FastCGI (через fcgiwrap) (локально). Там лежат скомпилированные бинарники (gcc, C++).

Всё, конечно, работает. НО! Не могу добиться многопоточности.
Если я делаю запрос (Запрос1), который на долгое время зависает (искусственно сделал долгий цикл, который просто прибавлял значение к переменной, тем самым нагружая ЦП), то и остальные, уже "мелкие" запросы (Запрос2) тоже "подвисают" и только после исполнения того "долгого" запроса исполняется уже "мелкий" (Запрос2).

Что касается нагрузки ЦП, то могу сказать следующее: во время исполнения запроса Запрос1 ЦП нагружался наполовину (учитывая, что у меня 2 ядра ЦП).

Вопрос: как "распараллелить" эти запросы (Запрос1 и Запрос2), чтобы из-за одного долгого FastCGI-запроса остальные FastCGI-запросы не подвисали (т. е. чтобы во время исполнения запроса Запрос1 исполнялись запросы Запрос2)? (чтобы заодно и использовать все ядра процессора). Есть альтернативы fcgiwrap, которые могут исполнять другие бинарники параллельно?

Файл nginx.conf:
Кликните здесь для просмотра всего текста

Код
user www-data;
worker_processes 2;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

thread_pool one threads=64 max_queue=0;

events {
	worker_connections 768;
	multi_accept on;
	accept_mutex off;
}

http {
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 5;
	types_hash_max_size 2048;
	sendfile_max_chunk 512k;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;
	
	server_tokens off;
	# more_clear_headers 'Server';
	
	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	#access_log /var/log/nginx/access.log;
	access_log off;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	 gzip_vary on;
	# gzip_proxied any;
	 gzip_comp_level 6;
	 gzip_buffers 16 8k;
	 gzip_http_version 1.1;
	 gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
#	include /etc/nginx/sites-enabled/*;
}
Файл denn.conf из conf.d (настройки самого сайта):
Кликните здесь для просмотра всего текста

Код
server {
	listen       80;
	server_name  localhost;

	charset utf-8;
	access_log off;
	location / {
		root   /ServerRoot;
		aio threads=one;
		index  index.htm;
	}
	
	location ~ /api/ {
		gzip           off;
		aio threads=one;
		root           /ServerRoot;
		fastcgi_pass   unix:/var/run/fcgiwrap.socket;
		
		fastcgi_param  QUERY_STRING       $query_string;
		fastcgi_param  REQUEST_METHOD     $request_method;
		fastcgi_param  CONTENT_TYPE       $content_type;
		fastcgi_param  CONTENT_LENGTH     $content_length;
		
		fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
		fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
		fastcgi_param  REQUEST_URI        $request_uri;
		fastcgi_param  DOCUMENT_URI       $document_uri;
		fastcgi_param  DOCUMENT_ROOT      $document_root;
		# fastcgi_param  SERVER_PROTOCOL    $server_protocol;
		
		# fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
		# fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
		
		fastcgi_param  REMOTE_ADDR        $remote_addr;
		fastcgi_param  REMOTE_PORT        $remote_port;
		fastcgi_param  SERVER_ADDR        $server_addr;
		fastcgi_param  SERVER_PORT        $server_port;
		
		fastcgi_param  SERVER_NAME        $host;
	}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2021, 21:12
Ответы с готовыми решениями:

Как посылается запрос по FastCGI
Разъясните пожалуйста следующий вопрос связанный с FastCGI: Вот имеется такая конфигурация для...

Отличие CGI/FastCGI от PHP
Чем собственно отличаются? Ещё не совсем понятно что такое CGI. Вроде как есть сам CGI (ныне...

Apache+mod_php или Nginx+FastCGI
Понимаю, что, возможно развожу очередной холивар, но хотелось бы точно узнать, что использовать...

FastCGI + Apache - Access to the script has been denied
Здравствуйте, помогите с проблемой побороть apache + php5.6-fpm / php7.0-fpm: Логи: FastCGI:...

1
2 / 2 / 1
Регистрация: 09.02.2018
Сообщений: 28
11.02.2021, 04:09 2
На
unix:/var/run/fcgiwrap.socket;
слушает свой демон, который имеет свои настройки (и одновременное число процессов / соединений тоже). Если я правильно помню.
0
11.02.2021, 04:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2021, 04:09
Помогаю со студенческими работами здесь

Истек настроенный для процесса FastCGI тайм-аут запроса
Добрый день. Как убрать ошибку: "Истек настроенный для процесса FastCGI тайм-аут запроса"? Нужно...

Delphi ( + FastCGI) VS C++ ( + FastCGI)
На основе данных языков будет разрабатываться технология по типу ( то есть язык использующий...

Fastcgi-Daemon
Всем привет! кто использовал его? есть вопрос, как настроить конфиг для своего приложения, чтобы...

FastCGI и шаблонизация
Доброго времени суток. Совершенно очевидно, что FastCGI хорошо подходит для быстрой обработки...

FastCGI включение
У меня проблема. Никак не нашёл, и не понял как включить FastCGI в системе. Ибо я криворукий, ибо...

вопросы по FastCGI
есть несколько вопросов по FastCGI, есть кто-нибудь, кто с этим реально работал?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru