Điểm:1

Tôi vừa phải tăng thời gian chờ từ 30 giây lên 60 giây vì tôi không thể hiểu tại sao yêu cầu lớn nhất của chúng tôi lại quá chậm. (Nginx + Php-fpm chạy trên gke)

lá cờ tr

phiên bản php-fpm: 7.4 phiên bản nginx: 1.19.0

Chúng tôi chạy trên gke, kubernetes; các nút của chúng tôi có 10 cpu và 24G ram và chúng tôi yêu cầu 2 CPU (giới hạn 3) cho các nhóm chạy ngăn xếp Laravel của chúng tôi (nginx + php-fpm). Hai dịch vụ chia sẻ một nhóm, nhưng là các vùng chứa riêng biệt (một cho nginx, một cho php). Lý do họ chia sẻ một nhóm là vì nó làm tắc nghẽn mạng của chúng tôi để giao tiếp php -> nginx từ các nhóm riêng biệt (chúng tôi đã từng chạy nginx / php trong các dịch vụ/triển khai riêng biệt)

Ngoài ra, nginx và php chia sẻ kết nối thông qua tệp dùng chung được chia sẻ dưới dạng ổ đĩa: e

      - tên: ổ cắm php
        Dir trống: {}
        khối lượngMount:
        - tên: ổ cắm php
          mountPath: /sock

điều này dường như thậm chí còn tốt hơn kết nối mạng cục bộ trong nhóm và chúng tôi tin rằng đó là phương pháp hay nhất.

Nhưng điều đó đưa tôi đến câu hỏi của mình: tại sao yêu cầu cụ thể này lại quá chậm? Tôi biết rằng đó là rất nhiều dữ liệu, nhưng nó không dữ liệu lớn. Tôi tin rằng nó có dung lượng 3MB không nén nhưng cuối cùng lại được nén bằng gzip <1MB:

hình ảnh hiển thị yêu cầu 247 kB với 47 giây lần

Nhưng phải mất một thời gian dài, trong thời gian chờ 30 giây ban đầu của chúng tôi.

Chúng tôi biết rằng sẽ rất nhiều trên cơ sở dữ liệu của chúng tôi để xuất dữ liệu có giá trị trong một năm cho 3000 người dùng, vì vậy chúng tôi lưu trữ phản hồi này trong Redis.Và nhìn vào nhật ký PHP, chúng tôi truy cập bộ đệm và bắt đầu trả về phản hồi sau chưa đầy 1/4 giây.

Đâu đó giữa php -> nginx -> máy khách mất quá nhiều thời gian.

Lúc đầu, tôi nghĩ đó là do chúng tôi đang nén một lượng lớn dữ liệu; vô hiệu hóa gzip không giúp được gì. Tôi thậm chí còn nghĩ rằng nginx có thể phải thực hiện việc đệm tệp, vì vậy tôi đã nâng cấp đĩa nút của chúng tôi từ 100GB lên 200GB và thậm chí từ HDD lên SSD. Điều đó đã không giúp đỡ. Chúng tôi thậm chí đã nhiều lần học được rằng chúng tôi thường là trường hợp khó khăn nhất khi nói đến cấu hình, vì vậy tôi đã thử đặt fastcgi_buffers, proxy_buffers và gzip_buffers thành các giá trị bộ nhớ cực cao:

    keepalive_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_connect_timeout 120;

    # Thử kích thước bộ đệm cao hơn để tải đánh giá lớn
    bật fastcgi_buffering;
    fastcgi_buffers 50000 4k;
    fastcgi_busy_buffers_size 4098k;

    client_max_body_size 128M;
    client_body_buffer_size 45M;

    client_header_buffer_size 16k;
    large_client_header_buffers 32 4k;

    proxy_buffers 50000 4k;
    proxy_buffer_size 4098k;
    proxy_busy_buffers_size 4098k;

    ##
    # Cài đặt Gzip
    ##

    bật gzip;
    gzip_disable "msie6";
    bật gzip_vary;
    gzip_proxied bất kỳ;
    gzip_comp_level 6;
    gzip_buffers 50000 4k;
    gzip_http_version 1.1;
    gzip_min_length 64;
    văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản x-javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/ứng dụng javascript/ứng dụng vnd.ms-fontobject/phông chữ x-font-ttf/hình ảnh opentype/svg+ hình ảnh xml/biểu tượng x;

nhưng điều này dường như cũng không giúp được gì.

Làm chậm PHP:

[08-Jul-2021 18:09:48] [pool www] pid 120 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 script_filename = /var/www/public/index.php - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81baf0] runQueryCallback() /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:629 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b9b0] run() /var/www/vendor/laravel/framework/src/Illuminate/Database/Connection.php:338 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b910] select() /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2159 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b860] runSelect() /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2147 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b760] Illuminate\Database\Query\{closure}() /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2619 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b660] onceWithColumns() /var/www/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2148 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b540] get() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:546 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b3c0] getModels() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:530 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b240] get() /var/www/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php:143 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b1b0] first() /var/www/app/Models/User.php:232 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81b070] getAccountAttribute() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:454 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81afc0] mutateAttribute() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:350 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81ae90] getAttributeValue() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:323 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81ada0] getAttribute() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1550 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81acb0] offsetExists() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php:1595 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81ac40] __isset() không xác định:0 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fff466902c0] ???() /var/www/app/Models/User.php:236 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81abb0] getAccountTypeAttribute() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:454 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81ab00] mutateAttribute() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:466 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [0x00007fe3cc81aa40] mutateAttributeForArray() /var/www/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php:111 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.478 [08-Jul-2021 18:09:48] THÔNG BÁO: đã hoàn thành dấu vết của 120 - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.477 [08-Jul-2021 18:09:48] CẢNH BÁO: [pool www] con 120, tập lệnh '/var/www/public/index.php' (yêu cầu: "NHẬN / index.php?clientTimezone=America%2FLos_Angeles") thực thi quá chậm (6,203325 giây), ghi nhật ký - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.477 [08-Jul-2021 18:09:48] THÔNG BÁO: con 120 đã dừng truy tìm - - 
Ngày 8 tháng 7 năm 2021 @ 11:09:48.477 [08-Jul-2021 18:09:48] THÔNG BÁO: sắp truy vết 120

Có ai có ý tưởng nào khác?

Michael Hampton avatar
lá cờ cz
Bạn đã đọc nhật ký chậm? Nó chỉ ra rất rõ ràng cơ sở dữ liệu của bạn là nguồn gốc của vấn đề. Đó là nơi bạn nên tìm kiếm tiếp theo.
PoorBob avatar
lá cờ tr
Cảm ơn bạn, tôi chỉ có thể phát hiện ra rằng chúng tôi đã truy cập cơ sở dữ liệu N lần cho mỗi mối quan hệ với ngay cả phản hồi được lưu trong bộ nhớ cache khi Tuần tự hóa Json cho câu lệnh trả về cuối cùng
PoorBob avatar
lá cờ tr
Thành thật mà nói, giống như 3*N^2 hơn. Ồ. Bây giờ nhanh hơn nhiều. Bây giờ chúng tôi đang tải phản hồi 46 giây ban đầu sau 2 giây
Điểm:1
lá cờ tr

Sau khi được yêu cầu sử dụng hàm slow_log của php, tôi có thể thấy rằng mình đã truy cập cơ sở dữ liệu một cách bất ngờ vì tôi đang sử dụng phản hồi được lưu trong bộ nhớ cache. Nhiều dữ liệu đang được háo hức tải sau khi thực tế khi tuần tự hóa json cuối cùng cho câu lệnh trả về

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.