Browse Source

optimize swoole (#9261)

MARiA so cute 11 months ago
parent
commit
64398bce24

+ 1 - 1
frameworks/PHP/swoole/database.php

@@ -144,7 +144,7 @@ class Connections
             ->withUsername('benchmarkdbuser')
             ->withUsername('benchmarkdbuser')
             ->withPassword('benchmarkdbpass');
             ->withPassword('benchmarkdbpass');
 
 
-        self::$pool   = new PDOPool($config, 128);
+        self::$pool   = new PDOPool($config, intval(1400 / swoole_cpu_num()));
         self::$driver = $driver;
         self::$driver = $driver;
     }
     }
 
 

+ 1 - 0
frameworks/PHP/swoole/php.ini

@@ -1,3 +1,4 @@
+zend_extension=opcache.so
 opcache.enable=1
 opcache.enable=1
 opcache.enable_cli=1
 opcache.enable_cli=1
 opcache.validate_timestamps=0
 opcache.validate_timestamps=0

+ 1 - 0
frameworks/PHP/swoole/swoole-async-mysql.dockerfile

@@ -2,6 +2,7 @@ FROM ubuntu:24.04
 
 
 ENV SWOOLE_VERSION 5.1.4
 ENV SWOOLE_VERSION 5.1.4
 ENV ENABLE_COROUTINE 1
 ENV ENABLE_COROUTINE 1
+ENV CPU_MULTIPLES 1
 ENV DATABASE_DRIVER mysql
 ENV DATABASE_DRIVER mysql
 
 
 ARG DEBIAN_FRONTEND=noninteractive
 ARG DEBIAN_FRONTEND=noninteractive

+ 1 - 0
frameworks/PHP/swoole/swoole-async-postgres.dockerfile

@@ -2,6 +2,7 @@ FROM ubuntu:24.04
 
 
 ENV SWOOLE_VERSION 5.1.4
 ENV SWOOLE_VERSION 5.1.4
 ENV ENABLE_COROUTINE 1
 ENV ENABLE_COROUTINE 1
+ENV CPU_MULTIPLES 1
 ENV DATABASE_DRIVER pgsql
 ENV DATABASE_DRIVER pgsql
 
 
 ARG DEBIAN_FRONTEND=noninteractive
 ARG DEBIAN_FRONTEND=noninteractive

+ 2 - 4
frameworks/PHP/swoole/swoole-server.php

@@ -8,9 +8,8 @@ use Swoole\Http\Response;
 $enableCoroutine = getenv('ENABLE_COROUTINE') == 1;
 $enableCoroutine = getenv('ENABLE_COROUTINE') == 1;
 $connection      = $enableCoroutine ? Connections::class : Connection::class;
 $connection      = $enableCoroutine ? Connections::class : Connection::class;
 
 
-$server  = new Server('0.0.0.0', 8080);
 $setting = [
 $setting = [
-    'worker_num'        => swoole_cpu_num() * 4,
+    'worker_num'        => swoole_cpu_num() * ((int) getenv('CPU_MULTIPLES')),
     'log_file'          => '/dev/null',
     'log_file'          => '/dev/null',
     'enable_coroutine'  => $enableCoroutine,
     'enable_coroutine'  => $enableCoroutine,
     'enable_reuse_port' => true
     'enable_reuse_port' => true
@@ -18,12 +17,11 @@ $setting = [
 
 
 if ($enableCoroutine) {
 if ($enableCoroutine) {
     $setting['hook_flags'] = SWOOLE_HOOK_ALL;
     $setting['hook_flags'] = SWOOLE_HOOK_ALL;
-    $setting['worker_num'] = swoole_cpu_num();
 }
 }
 
 
+$server = new Server('0.0.0.0', 8080);
 $server->set($setting);
 $server->set($setting);
 
 
-
 $server->on('workerStart', function () use ($connection) {
 $server->on('workerStart', function () use ($connection) {
     $connection::init(getenv('DATABASE_DRIVER'));
     $connection::init(getenv('DATABASE_DRIVER'));
 });
 });

+ 1 - 0
frameworks/PHP/swoole/swoole-sync-mysql.dockerfile

@@ -2,6 +2,7 @@ FROM ubuntu:24.04
 
 
 ENV SWOOLE_VERSION 5.1.4
 ENV SWOOLE_VERSION 5.1.4
 ENV ENABLE_COROUTINE 0
 ENV ENABLE_COROUTINE 0
+ENV CPU_MULTIPLES 1
 ENV DATABASE_DRIVER mysql
 ENV DATABASE_DRIVER mysql
 
 
 ARG DEBIAN_FRONTEND=noninteractive
 ARG DEBIAN_FRONTEND=noninteractive

+ 2 - 1
frameworks/PHP/swoole/swoole-sync-postgres.dockerfile

@@ -2,6 +2,7 @@ FROM ubuntu:24.04
 
 
 ENV SWOOLE_VERSION 5.1.4
 ENV SWOOLE_VERSION 5.1.4
 ENV ENABLE_COROUTINE 0
 ENV ENABLE_COROUTINE 0
+ENV CPU_MULTIPLES 4
 ENV DATABASE_DRIVER pgsql
 ENV DATABASE_DRIVER pgsql
 
 
 ARG DEBIAN_FRONTEND=noninteractive
 ARG DEBIAN_FRONTEND=noninteractive
@@ -15,7 +16,7 @@ RUN apt update -yqq > /dev/null \
     && cd /tmp/swoole-src-${SWOOLE_VERSION} \
     && cd /tmp/swoole-src-${SWOOLE_VERSION} \
     && phpize > /dev/null \
     && phpize > /dev/null \
     && ./configure > /dev/null \
     && ./configure > /dev/null \
-    && make -j2 > /dev/null \
+    && make -j8 > /dev/null \
     && make install > /dev/null \
     && make install > /dev/null \
     && echo "extension=swoole.so" > /etc/php/8.3/cli/conf.d/50-swoole.ini
     && echo "extension=swoole.so" > /etc/php/8.3/cli/conf.d/50-swoole.ini