Comments (26)
Same here, using Laravel, Octane, Swoole
Image built using the following Dockerfile:
FROM php:8.3-cli-alpine
WORKDIR /var/www/html
RUN curl -sSLf \
-o /usr/local/bin/install-php-extensions \
https://github.com/mlocati/docker-php-extension-installer/releases/download/2.2.11/install-php-extensions \
&& echo "4d8a1bbd2d53a4ce8d194647da9dc2ff37768a26cdb46f459bfc7642d170eb85147534e850bcb503b7b38f04ddb6228f2ef0e50619349ba02fe79aa138452cbe /usr/local/bin/install-php-extensions" | sha512sum -c - \
&& chmod +x /usr/local/bin/install-php-extensions \
&& install-php-extensions \
zip \
pdo_mysql \
pgsql \
pdo_pgsql \
redis \
calendar \
gd \
exif \
swoole \
pcntl \
&& apk add --no-cache --virtual .build-deps npm \
&& npm install -g svgo \
&& apk add --no-cache \
su-exec \
supervisor \
jpegoptim \
optipng \
pngquant \
gifsicle \
ffmpeg \
&& apk del .build-deps
Trying to access the project with Octane & Swoole:
[2024-05-13 14:10:43 #31274.0] WARNING Server::check_worker_exit_status(): worker(pid=31408, id=16) abnormal exit, status=0, signal=11
A bug occurred in Swoole-v5.1.2, please report it.
The Swoole developers probably don't know about it,
and unless you report it, chances are it won't be fixed.
You can read How to report a bug doc before submitting any bug reports:
>> https://github.com/swoole/swoole-src/blob/master/.github/ISSUE.md
Please do not send bug reports in the mailing list or personal letters.
The issue page is also suitable to submit feature requests.
OS: Linux 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64
GCC_VERSION: 13.2.1 20231014
OPENSSL_VERSION: OpenSSL 3.1.4 24 Oct 2023
PHP_VERSION : 8.3.7
Additional info:
/var/www/html # php --ri swoole
swoole
Swoole => enabled
Author => Swoole Team <[email protected]>
Version => 5.1.2
Built => May 13 2024 13:08:15
coroutine => enabled with boost asm context
epoll => enabled
eventfd => enabled
signalfd => enabled
spinlock => enabled
rwlock => enabled
openssl => OpenSSL 3.1.4 24 Oct 2023
dtls => enabled
http2 => enabled
json => enabled
c-ares => 1.27.0
zlib => 1.3.1
brotli => E16781312/D16781312
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
mysqlnd => enabled
async_redis => enabled
Directive => Local Value => Master Value
swoole.enable_coroutine => On => On
swoole.enable_library => On => On
swoole.enable_fiber_mock => Off => Off
swoole.enable_preemptive_scheduler => Off => Off
swoole.display_errors => On => On
swoole.use_shortname => On => On
swoole.unixsock_buffer_size => 8388608 => 8388608
/var/www/html # uname -a
Linux 6883120929f9 6.1.0-20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.85-1 (2024-04-11) x86_64 Linux
/var/www/html # php -v
PHP 8.3.7 (cli) (built: May 10 2024 21:59:17) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies
/var/www/html # gcc -v
/bin/ash: gcc: not found
Can confirm it's working on v5.1.1 (previous build)
from swoole-src.
@robinnydahl @modrink Perhaps some commits led to this issue.I'll take some time to test it.
from swoole-src.
Hi all,
I'm afraid we have not yet had the time to fully make a reproducible case without sharing sensitive details, but I can confirm the issue is present in Swoole 5.1.2 and that reverting back to 5.1.1 solves the issue.
We have tested setting up a clean Laravel project with Octane using Swoole 5.1.2 inside a docker image running from php:8.2-cli-alpine
and using mlocati/php-extension-installer
to install Swoole. When reaching Swoole on port 8000 the service keeps running, the same goes for when we access it through NGINX inside the image as well.
The NGINX config inside the image looks like this:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
listen [::]:80;
server_name domain.com;
server_tokens off;
root /home/forge/domain.com/public;
index index.php;
charset utf-8;
location /index.php {
try_files /not_exists @octane;
}
location / {
try_files $uri $uri/ @octane;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/domain.com-error.log error;
error_page 404 /index.php;
location @octane {
set $suffix "";
if ($uri = /index.php) {
set $suffix ?$query_string;
}
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://127.0.0.1:8000$suffix;
}
}
The problem actually occurs when we are running the requests through the Kubernetes Ingress Controller which is also using NGINX behind the scenes. After the first request is made through the Kubernetes Ingress Controller the Swoole service shuts down, after this we are also unable to reach the Swoole endpoint directly within the environment as well.
I can concur with @modrink that the issue is that the client closes the connection (HTTP 499), so there seems to be something wrong with the implementation in the HTTP server that was introduced in 5.1.2 and that it's triggered mostly when using HTTP Proxies like NGNIX (with certain settings), Traefik and Cloudflare.
As mentioned we have not yet been able to reproduce this in a way to share yet.
from swoole-src.
RUN install-php-extensions pcntl sockets swoole pdo_mysql
this command i installed swoole
from swoole-src.
Do you have the xdebug extension? If so, try not using it and see.
from swoole-src.
no, i dont use xdebug
from swoole-src.
it's error only in 5.1.2, 5.1.1 works fine
from swoole-src.
@modrink I can not reproduce it, Is this a consistently reproducible scenario?
I am directly accessing 127.0.0.1:8000 without any business logic.
from swoole-src.
We have Cloudflare & Traefik V3 in front, but I'll test more when I get the chance. I was not able to reproduce this locally (only on server with the proxy). But Swoole v5.1.1 works and OpenSwoole latest works as well.
With Traefik the occurring errors are HTTP 499 and 502
from swoole-src.
This happens to me as well. swoole 5.1.2 + xdebug 3.3.2
sandbox-sb.34i5g-swoole8.1 | [2024-05-17 13:07:00 #1.0] WARNING Server::check_worker_exit_status(): worker(pid=154, id=9) abnormal exit, status=0, signal=11
sandbox-sb.34i5g-swoole8.1 | A bug occurred in Swoole-v5.1.2, please report it.
sandbox-sb.34i5g-swoole8.1 | The Swoole developers probably don't know about it,
sandbox-sb.34i5g-swoole8.1 | and unless you report it, chances are it won't be fixed.
sandbox-sb.34i5g-swoole8.1 | You can read How to report a bug doc before submitting any bug reports:
sandbox-sb.34i5g-swoole8.1 | >> https://github.com/swoole/swoole-src/blob/master/.github/ISSUE.md
sandbox-sb.34i5g-swoole8.1 | Please do not send bug reports in the mailing list or personal letters.
sandbox-sb.34i5g-swoole8.1 | The issue page is also suitable to submit feature requests.
sandbox-sb.34i5g-swoole8.1 |
sandbox-sb.34i5g-swoole8.1 | OS: Linux 6.8.8-300.fc40.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Apr 27 17:53:31 UTC 2024 x86_64
sandbox-sb.34i5g-swoole8.1 | GCC_VERSION: 11.4.0
sandbox-sb.34i5g-swoole8.1 | OPENSSL_VERSION: OpenSSL 3.0.2 15 Mar 2022
sandbox-sb.34i5g-swoole8.1 | PHP_VERSION : 8.1.2-1ubuntu2.17
sandbox-sb.34i5g-swoole8.1 |
from swoole-src.
@linuxd3v Can you provide a simple script for reproducing the error?
from swoole-src.
@linuxd3v I found that the max_nesting_level parameter of xdebug is set to 512. If a certain loop exceeds 512 times, a PHP Fatal error will be thrown, terminating the process.
from swoole-src.
Related Issues (20)
- 5.1.2 Context::parse_multipart_data 导致abort 进程退出 HOT 11
- A bug occurred in Swoole-v5.1.1, please report it. HOT 19
- Websocket connection failed. SSL related Issue? HOT 1
- Swoole not supporting partitioned cookie parameter HOT 1
- Can allow_redirects be supported on the HTTP/WebSocket? HOT 7
- Alpine + Swoole + PgSQL on the host = `could not send SSL negotiation packet: Resource temporarily unavailable` HOT 15
- 已解决
- 开启一键协程化之后, `proc_open()` 似乎会受到先前空方法体的 `run(function() {});` 的影响。 HOT 1
- Worker exits without much information HOT 3
- Websocket服務,調用Task做訊息發送,出現session does not exits HOT 5
- \Swoole\Server::shutdown never gets called and signals don't seem to work with \Swoole\Process::signal() / pcntl_signal() HOT 4
- PHP Startup Unable to load dynamic library 'swoole' HOT 2
- guzzlehttp在stream=true时,设置超时无效 HOT 5
- 协程被长时间挂起会导致内存大量增加 HOT 49
- windows swoole-cli-v4.8.13-cygwin-x64.zip 在windows上 run(function{}) 内的curl 问题 HOT 2
- 在 Swoole\Coroutine\Http\Server 中的 http server 使用 sendfile 在高并发时会导致 PHP 假死并且内存泄露 HOT 57
- 🪶 在 C++ 中,有提供了Socket sendfile的方法(zerocopy),可以不通过CPU去调度资源,避免重复拷贝两次DMZ(或者更多) HOT 15
- windows swoole-cli-v4.8.13-cygwin-x64 使用协程监听的Channel数据然后插入数据库,插入没几条就报错了! HOT 5
- syntax error near unexpected token `SQLITE,' HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swoole-src.