Google Cloud 运行 最多只能同时处理100个请求
Google Cloud Run can only handle 100 request maximum concurrently
所以,我的开发团队试图从 GCE 迁移到 GCR,我们已经成功地部署了云 运行 服务和 CI/CD 使用 github 操作。但是我们遇到了一个问题,即 Cloud 运行 服务可以同时处理的请求量不超过 100 个请求。
因此,我们应用程序的基本框架是 php/codeigniter,我们使用的网络服务器是 apache2 网络服务器,以及 sql 服务器作为我们已经包含在 dockerfile
中的数据库
FROM php:7.4.22-apache
USER root
RUN apt-get update && apt-get upgrade -y
RUN apt-get update && apt-get install -y gnupg2
RUN apt-get install libcurl4-openssl-dev
RUN apt-get install zlib1g-dev
RUN apt-get install libpng-dev -y
RUN docker-php-ext-install curl
RUN docker-php-ext-install gd
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN apt-get install wget
RUN wget http://ftp.de.debian.org/debian/pool/main/g/glibc/multiarch-support_2.28-10+deb10u1_amd64.deb
RUN dpkg -i multiarch-support_2.28-10+deb10u1_amd64.deb
RUN apt-get install -y libodbc1
RUN apt-get install -y unixodbc-dev
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN echo "extension=pdo_sqlsrv.so" >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.:\s||"`/30-pdo_sqlsrv.ini
RUN echo "extension=sqlsrv.so" >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.:\s||"`/30-sqlsrv.ini
RUN rm multiarch-support_2.28-10+deb10u1_amd64.deb
# RUN ACCEPT_EULA=Y apt-get -y install mssql-tools
RUN ACCEPT_EULA=Y apt-get install msodbcsql17
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
COPY apache2.conf /etc/apache2/apache2.conf
COPY openssl.cnf /etc/ssl/openssl.cnf
COPY php.ini /etc/php/7.4/apache2/php.ini
RUN a2enmod rewrite
RUN /etc/init.d/apache2 restart
这是我们使用的 dockerfile
FROM jamesjones/test-base:latest
USER root
COPY . /var/www/html
RUN cd /var/www/html
RUN chown -R www-data:www-data /var/www/html
COPY v1/application/config/config.prod.php /var/www/html/v1/application/config/config.php
COPY v1/application/config/database.prod.php /var/www/html/v1/application/config/database.php
COPY v1/application/config/routes.prod.php /var/www/html/v1/application/config/routes.php
COPY v2/application/config/config.prod.php /var/www/html/v2/application/config/config.php
COPY v2/application/config/database.prod.php /var/www/html/v2/application/config/database.php
COPY v2/application/config/routes.prod.php /var/www/html/v2/application/config/routes.php
COPY .htaccess.prod /var/www/html/.htaccess
VOLUME /var/www/html
我已经尝试了这些步骤,但问题似乎仍然存在
https://cloud.google.com/blog/topics/developers-practitioners/3-ways-optimize-cloud-run-response-times
这是我们的云 运行 规范
我也试过将自动缩放中的最小实例数增加到 10,但似乎没有什么区别。
这个问题有什么替代方案吗?
事实证明问题出在 vpc 连接器上,因为我们的数据库是使用 tcp/ip 连接的,我们必须将 public ip 列入白名单才能安全访问它,这就是为什么我们正在使用 vpc,所以我们使用 mikrotik 来绑定我们的 ip,而不是使用 vpc 连接器。 gcr服务终于可以处理10000个请求了。
所以,我的开发团队试图从 GCE 迁移到 GCR,我们已经成功地部署了云 运行 服务和 CI/CD 使用 github 操作。但是我们遇到了一个问题,即 Cloud 运行 服务可以同时处理的请求量不超过 100 个请求。 因此,我们应用程序的基本框架是 php/codeigniter,我们使用的网络服务器是 apache2 网络服务器,以及 sql 服务器作为我们已经包含在 dockerfile
中的数据库FROM php:7.4.22-apache
USER root
RUN apt-get update && apt-get upgrade -y
RUN apt-get update && apt-get install -y gnupg2
RUN apt-get install libcurl4-openssl-dev
RUN apt-get install zlib1g-dev
RUN apt-get install libpng-dev -y
RUN docker-php-ext-install curl
RUN docker-php-ext-install gd
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update
RUN apt-get install wget
RUN wget http://ftp.de.debian.org/debian/pool/main/g/glibc/multiarch-support_2.28-10+deb10u1_amd64.deb
RUN dpkg -i multiarch-support_2.28-10+deb10u1_amd64.deb
RUN apt-get install -y libodbc1
RUN apt-get install -y unixodbc-dev
RUN pecl install sqlsrv
RUN pecl install pdo_sqlsrv
RUN echo "extension=pdo_sqlsrv.so" >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.:\s||"`/30-pdo_sqlsrv.ini
RUN echo "extension=sqlsrv.so" >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.:\s||"`/30-sqlsrv.ini
RUN rm multiarch-support_2.28-10+deb10u1_amd64.deb
# RUN ACCEPT_EULA=Y apt-get -y install mssql-tools
RUN ACCEPT_EULA=Y apt-get install msodbcsql17
COPY 000-default.conf /etc/apache2/sites-available/000-default.conf
COPY apache2.conf /etc/apache2/apache2.conf
COPY openssl.cnf /etc/ssl/openssl.cnf
COPY php.ini /etc/php/7.4/apache2/php.ini
RUN a2enmod rewrite
RUN /etc/init.d/apache2 restart
这是我们使用的 dockerfile
FROM jamesjones/test-base:latest
USER root
COPY . /var/www/html
RUN cd /var/www/html
RUN chown -R www-data:www-data /var/www/html
COPY v1/application/config/config.prod.php /var/www/html/v1/application/config/config.php
COPY v1/application/config/database.prod.php /var/www/html/v1/application/config/database.php
COPY v1/application/config/routes.prod.php /var/www/html/v1/application/config/routes.php
COPY v2/application/config/config.prod.php /var/www/html/v2/application/config/config.php
COPY v2/application/config/database.prod.php /var/www/html/v2/application/config/database.php
COPY v2/application/config/routes.prod.php /var/www/html/v2/application/config/routes.php
COPY .htaccess.prod /var/www/html/.htaccess
VOLUME /var/www/html
我已经尝试了这些步骤,但问题似乎仍然存在
https://cloud.google.com/blog/topics/developers-practitioners/3-ways-optimize-cloud-run-response-times
这是我们的云 运行 规范
我也试过将自动缩放中的最小实例数增加到 10,但似乎没有什么区别。
这个问题有什么替代方案吗?
事实证明问题出在 vpc 连接器上,因为我们的数据库是使用 tcp/ip 连接的,我们必须将 public ip 列入白名单才能安全访问它,这就是为什么我们正在使用 vpc,所以我们使用 mikrotik 来绑定我们的 ip,而不是使用 vpc 连接器。 gcr服务终于可以处理10000个请求了。