Làm thế nào để bạn xử lý lỗi hết bộ nhớ trong nhà soạn nhạc?

Vì trình soạn thảo nói chung là một quá trình nặng nên nó yêu cầu khá nhiều tài nguyên, cụ thể là bộ nhớ trong trường hợp này. Điều này có thể dẫn đến quá trình soạn nhạc không thể hoàn thành thành công. Trong bài viết này, chúng tôi thảo luận về các nguyên nhân có thể và cách giải quyết.  


MỤC LỤC

Trình soạn thảo gặp sự cố trên giới hạn bộ nhớ PHP

Bạn có thể gặp phải hai sự cố khác nhau liên quan đến bộ nhớ trong khi chạy các quy trình tổng hợp trên Hypernode của mình. Trước hết, giới hạn bộ nhớ PHP được mã hóa cứng là 2GB cho mỗi Hypernode. Thông thường, điều này là đủ cho mỗi quy trình PHP trong cửa hàng của bạn. Nhưng có một ngoại lệ cho điều này, đó là nhà soạn nhạc.  

Trình soạn thảo là một quá trình thực sự nặng nề, đòi hỏi nhiều bộ nhớ. Vì vậy, có thể xảy ra trường hợp bạn đang cố chạy một lệnh soạn thảo, lệnh này cuối cùng sẽ bị hủy do thiếu bộ nhớ PHP. Lỗi bạn sẽ thấy sẽ như thế này

app@3nljr6-example-magweb-cmbl:~/magento2$ composer require weberinformatics/spreadsheet-product-master
Using version ^1.0 for weberinformatics/spreadsheet-product-master

./composer.json has been updated
Loading composer repositories with package information
Updating dependencies [including require-dev]

mmap[] failed: [12] Cannot allocate memory

mmap[] failed: [12] Cannot allocate memory
PHP Fatal error:  Out of memory [allocated 1520447488] [tried to allocate 134217736 bytes] in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleSet.php on line 83

Fatal error: Out of memory [allocated 1520447488] [tried to allocate 134217736 bytes] in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleSet.php on line 83]

Khi bạn gặp phải một lỗi như trên, bạn có thể khắc phục nó. Tất cả những gì bạn phải làm là chạy lệnh của nhà soạn nhạc với COMPOSER_MEMORY_LIMIT=-1, sau đó là phần còn lại của lệnh của bạn. Vì vậy, trong ví dụ trên đây sẽ là COMPOSER_MEMORY_LIMIT=-1 composer require webinformatics/spreadsheet-product-master

Nhà soạn nhạc gặp sự cố về giới hạn bộ nhớ của máy chủ

Nếu bạn không gặp lỗi bộ nhớ PHP hoặc đã khắc phục sự cố đó, thì bạn có thể gặp phải tình trạng thiếu bộ nhớ tổng thể khi chạy trình soạn thảo vì trình soạn thảo chỉ yêu cầu nhiều tài nguyên. Trong trường hợp này, oom-killer có thể được kích hoạt và sẽ giết quá trình soạn thảo hoặc phiên SSH của bạn, điều này sẽ phá vỡ quá trình soạn thảo. Ví dụ, cái này có thể trông như thế này

app@3nljr6-example-magweb-cmbl:~/magento2$ php -d memory_limit=-1 composer require weberinformatics/spreadsheet-product-master
Using version ^1.0 for weberinformatics/spreadsheet-product-master
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies [including require-dev]
Killed

Lưu ý "Đã bị giết" ở dưới cùng, điều này cho thấy rằng phiên SSH của bạn đang bị giết bởi kẻ giết người do thiếu bộ nhớ.  


Có một số khả năng vẫn có thể hoàn thành lệnh của nhà soạn nhạc. Lúc đầu, điều quan trọng là có được một số thông tin chi tiết về tài nguyên của bạn. Bạn có thể làm điều này bằng cách chạy htop, điều này sẽ cung cấp cho bạn nguồn cấp dữ liệu trực tiếp về tài nguyên của bạn. Từ đây, bạn có thể nhấp vào cột "MEM%" sẽ sắp xếp tất cả các quy trình sử dụng bộ nhớ. Bây giờ nhấn "Shift+H" để đóng các tiến trình con. Bạn sẽ thấy từ trên xuống dưới quy trình nào đang sử dụng nhiều bộ nhớ nhất


Có một số thủ thuật để có thêm một chút bộ nhớ để bạn vẫn có thể chạy thành công lệnh soạn thảo của mình

  • Khởi động lại MySQL bằng   hypernode-servicectl khởi động lại mysql

MySQL là một dịch vụ thường sẽ sử dụng khá nhiều bộ nhớ. Đó là bởi vì MySQL lưu trữ bộ nhớ trong trường hợp nó có thể cần lại. Khởi động lại MySQL sẽ giải phóng tất cả bộ nhớ đệm nên sẽ có thêm một số bộ nhớ trống

  • Tạm thời vô hiệu hóa các cron Magento

Các cron Magento 2 cũng là các quy trình khá nặng sẽ có được bộ nhớ yên bình khi chúng chạy mỗi phút. Bạn có thể nhận xét các cron Magento trong crontab ngay trước khi bạn chạy lệnh soạn thảo của mình và sau khi hoàn tất, bạn có thể kích hoạt lại chúng.  

  • Kiểm tra các tiến trình sử dụng nhiều bộ nhớ nhất với htop

Có thể bạn sẽ thấy khá nhiều "hàng đợi. quy trình của người tiêu dùng. Tất cả những thứ này cùng nhau cũng có thể cần rất nhiều bộ nhớ. Sau khi vô hiệu hóa các cron Magento, bạn có thể giải phóng bộ nhớ. Xin lưu ý rằng các quy trình đó sẽ bắt đầu lại vào phút tới nếu các cron Magento được bật.  

Kiểm tra danh sách các quy trình của bạn bằng htop để xem liệu có bất kỳ quy trình nào khác không cần thiết chiếm nhiều bộ nhớ không. Đây là điều bạn phải suy nghĩ cẩn thận trước khi giết chúng, điều này có thể khác nhau tùy theo máy chủ.


Nếu bạn vẫn không có đủ bộ nhớ để hoàn thành lệnh soạn nhạc của mình sau khi làm theo các bước này thì chỉ có một giải pháp duy nhất. Hypernode hiện tại không phù hợp với yêu cầu của bạn và bạn sẽ cần nâng cấp lên gói lớn hơn với nhiều tài nguyên hơn.  

Lỗi nghiêm trọng hết bộ nhớ là gì?

Lỗi này cho biết rằng không có đủ bộ nhớ PHP trên máy chủ của bạn . Giới hạn bộ nhớ cho tập lệnh nên được đặt cao hơn trên máy chủ của bạn, vì vậy vui lòng tăng bộ nhớ PHP trên WP của bạn.

Làm cách nào để xử lý lỗi hết bộ nhớ trong laravel?

Tìm kiếm memory_limit và tăng giá trị . Ví dụ. memory_limit = 512M; .

Tệp JSON của nhà soạn nhạc ở đâu?

nhà soạn nhạc. json là một tệp JSON được đặt trong thư mục gốc của dự án PHP . Mục đích của nó là chỉ định một thuộc tính chung của dự án, siêu dữ liệu và các phụ thuộc, và nó là một phần của vô số các dự án hiện có.

Chủ Đề