Giter VIP home page Giter VIP logo
  • 👋 Hi, I’m @githud-sys
  • 👀 I’m interested in ...
  • 🌱 I’m currently learning ...
  • 💞️ I’m looking to collaborate on ...
  • 📫 How to reach me ...

githud-sys's Projects

b29 icon b29

Node.js v18.0.0 ► Mục lục ► Mục lục ► Các phiên bản khác ► Tùy chọn Mục lục Báo cáo chẩn đoán Cách sử dụng Cấu hình Tương tác với người lao động Báo cáo chẩn đoán# Độ ổn định: 2 - Ổn định Cung cấp bản tóm tắt chẩn đoán định dạng JSON, được ghi vào một tệp. Báo cáo được thiết kế để phát triển, thử nghiệm và sử dụng trong sản xuất, nhằm thu thập và lưu giữ thông tin để xác định vấn đề. Nó bao gồm JavaScript và dấu vết ngăn xếp gốc, thống kê đống, thông tin nền tảng, sử dụng tài nguyên, v.v. Với tùy chọn báo cáo được bật, báo cáo chẩn đoán có thể được kích hoạt trên các trường hợp ngoại lệ, lỗi nghiêm trọng và tín hiệu người dùng, ngoài việc kích hoạt theo chương trình thông qua các lệnh gọi API. Dưới đây là một báo cáo ví dụ hoàn chỉnh được tạo trên một trường hợp ngoại lệ không cần thiết để tham khảo. { "header": { "reportVersion": 1, "event": "exception", "trigger": "Exception", "filename": "report.20181221.005011.8974.0.001.json", "dumpEventTime": "2018-12-21T00:50:11Z", "dumpEventTimeStamp": "1545371411331", "processId": 8974, "cwd": "/home/nodeuser/project/node", "commandLine": [ "/home/nodeuser/project/node/out/Release/node", "--report-uncaught-exception", "/home/nodeuser/project/node/test/report/test-exception.js", "child" ], "nodejsVersion": "v12.0.0-pre", "glibcVersionRuntime": "2.17", "glibcVersionCompiler": "2.17", "wordSize": "64 bit", "arch": "x64", "platform": "linux", "componentVersions": { "node": "12.0.0-pre", "v8": "7.1.302.28-node.5", "uv": "1.24.1", "zlib": "1.2.11", "ares": "1.15.0", "modules": "68", "nghttp2": "1.34.0", "napi": "3", "llhttp": "1.0.1", "openssl": "1.1.0j" }, "release": { "name": "node" }, "osName": "Linux", "osRelease": "3.10.0-862.el7.x86_64", "osVersion": "#1 SMP Wed Mar 21 18:14:51 EDT 2018", "osMachine": "x86_64", "cpus": [ { "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz", "speed": 2700, "user": 88902660, "nice": 0, "sys": 50902570, "idle": 241732220, "irq": 0 }, { "model": "Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz", "speed": 2700, "user": 88902660, "nice": 0, "sys": 50902570, "idle": 241732220, "irq": 0 } ], "networkInterfaces": [ { "name": "en0", "internal": false, "mac": "13:10:de:ad:be:ef", "address": "10.0.0.37", "netmask": "255.255.255.0", "family": "IPv4" } ], "host": "test_machine" }, "javascriptStack": { "message": "Error: *** test-exception.js: throwing uncaught Error", "stack": [ "at myException (/home/nodeuser/project/node/test/report/test-exception.js:9:11)", "at Object.<anonymous> (/home/nodeuser/project/node/test/report/test-exception.js:12:3)", "at Module._compile (internal/modules/cjs/loader.js:718:30)", "at Object.Module._extensions..js (internal/modules/cjs/loader.js:729:10)", "at Module.load (internal/modules/cjs/loader.js:617:32)", "at tryModuleLoad (internal/modules/cjs/loader.js:560:12)", "at Function.Module._load (internal/modules/cjs/loader.js:552:3)", "at Function.Module.runMain (internal/modules/cjs/loader.js:771:12)", "at executeUserCode (internal/bootstrap/node.js:332:15)" ] }, "nativeStack": [ { "pc": "0x000055b57f07a9ef", "symbol": "report::GetNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, v8::Local<v8::String>, std::ostream&) [./node]" }, { "pc": "0x000055b57f07cf03", "symbol": "report::GetReport(v8::FunctionCallbackInfo<v8::Value> const&) [./node]" }, { "pc": "0x000055b57f1bccfd", "symbol": " [./node]" }, { "pc": "0x000055b57f1be048", "symbol": "v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) [./node]" }, { "pc": "0x000055b57feeda0e", "symbol": " [./node]" } ], "javascriptHeap": { "totalMemory": 6127616, "totalCommittedMemory": 4357352, "usedMemory": 3221136, "availableMemory": 1521370240, "memoryLimit": 1526909922, "heapSpaces": { "read_only_space": { "memorySize": 524288, "committedMemory": 39208, "capacity": 515584, "used": 30504, "available": 485080 }, "new_space": { "memorySize": 2097152, "committedMemory": 2019312, "capacity": 1031168, "used": 985496, "available": 45672 }, "old_space": { "memorySize": 2273280, "committedMemory": 1769008, "capacity": 1974640, "used": 1725488, "available": 249152 }, "code_space": { "memorySize": 696320, "committedMemory": 184896, "capacity": 152128, "used": 152128, "available": 0 }, "map_space": { "memorySize": 536576, "committedMemory": 344928, "capacity": 327520, "used": 327520, "available": 0 }, "large_object_space": { "memorySize": 0, "committedMemory": 0, "capacity": 1520590336, "used": 0, "available": 1520590336 }, "new_large_object_space": { "memorySize": 0, "committedMemory": 0, "capacity": 0, "used": 0, "available": 0 } } }, "resourceUsage": { "userCpuSeconds": 0.069595, "kernelCpuSeconds": 0.019163, "cpuConsumptionPercent": 0.000000, "maxRss": 18079744, "pageFaults": { "IORequired": 0, "IONotRequired": 4610 }, "fsActivity": { "reads": 0, "writes": 0 } }, "uvthreadResourceUsage": { "userCpuSeconds": 0.068457, "kernelCpuSeconds": 0.019127, "cpuConsumptionPercent": 0.000000, "fsActivity": { "reads": 0, "writes": 0 } }, "libuv": [ { "type": "async", "is_active": true, "is_referenced": false, "address": "0x0000000102910900", "details": "" }, { "type": "timer", "is_active": false, "is_referenced": false, "address": "0x00007fff5fbfeab0", "repeat": 0, "firesInMsFromNow": 94403548320796, "expired": true }, { "type": "check", "is_active": true, "is_referenced": false, "address": "0x00007fff5fbfeb48" }, { "type": "idle", "is_active": false, "is_referenced": true, "address": "0x00007fff5fbfebc0" }, { "type": "prepare", "is_active": false, "is_referenced": false, "address": "0x00007fff5fbfec38" }, { "type": "check", "is_active": false, "is_referenced": false, "address": "0x00007fff5fbfecb0" }, { "type": "async", "is_active": true, "is_referenced": false, "address": "0x000000010188f2e0" }, { "type": "tty", "is_active": false, "is_referenced": true, "address": "0x000055b581db0e18", "width": 204, "height": 55, "fd": 17, "writeQueueSize": 0, "readable": true, "writable": true }, { "type": "signal", "is_active": true, "is_referenced": false, "address": "0x000055b581d80010", "signum": 28, "signal": "SIGWINCH" }, { "type": "tty", "is_active": true, "is_referenced": true, "address": "0x000055b581df59f8", "width": 204, "height": 55, "fd": 19, "writeQueueSize": 0, "readable": true, "writable": true }, { "type": "loop", "is_active": true, "address": "0x000055fc7b2cb180", "loopIdleTimeSeconds": 22644.8 } ], "workers": [], "environmentVariables": { "REMOTEHOST": "REMOVED", "MANPATH": "/opt/rh/devtoolset-3/root/usr/share/man:", "XDG_SESSION_ID": "66126", "HOSTNAME": "test_machine", "HOST": "test_machine", "TERM": "xterm-256color", "SHELL": "/bin/csh", "SSH_CLIENT": "REMOVED", "PERL5LIB": "/opt/rh/devtoolset-3/root//usr/lib64/perl5/vendor_perl:/opt/rh/devtoolset-3/root/usr/lib/perl5:/opt/rh/devtoolset-3/root//usr/share/perl5/vendor_perl", "OLDPWD": "/home/nodeuser/project/node/src", "JAVACONFDIRS": "/opt/rh/devtoolset-3/root/etc/java:/etc/java", "SSH_TTY": "/dev/pts/0", "PCP_DIR": "/opt/rh/devtoolset-3/root", "GROUP": "normaluser", "USER": "nodeuser", "LD_LIBRARY_PATH": "/opt/rh/devtoolset-3/root/usr/lib64:/opt/rh/devtoolset-3/root/usr/lib", "HOSTTYPE": "x86_64-linux", "XDG_CONFIG_DIRS": "/opt/rh/devtoolset-3/root/etc/xdg:/etc/xdg", "MAIL": "/var/spool/mail/nodeuser", "PATH": "/home/nodeuser/project/node:/opt/rh/devtoolset-3/root/usr/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin", "PWD": "/home/nodeuser/project/node", "LANG": "en_US.UTF-8", "PS1": "\\u@\\h : \\[\\e[31m\\]\\w\\[\\e[m\\] > ", "SHLVL": "2", "HOME": "/home/nodeuser", "OSTYPE": "linux", "VENDOR": "unknown", "PYTHONPATH": "/opt/rh/devtoolset-3/root/usr/lib64/python2.7/site-packages:/opt/rh/devtoolset-3/root/usr/lib/python2.7/site-packages", "MACHTYPE": "x86_64", "LOGNAME": "nodeuser", "XDG_DATA_DIRS": "/opt/rh/devtoolset-3/root/usr/share:/usr/local/share:/usr/share", "LESSOPEN": "||/usr/bin/lesspipe.sh %s", "INFOPATH": "/opt/rh/devtoolset-3/root/usr/share/info", "XDG_RUNTIME_DIR": "/run/user/50141", "_": "./node" }, "userLimits": { "core_file_size_blocks": { "soft": "", "hard": "unlimited" }, "data_seg_size_kbytes": { "soft": "unlimited", "hard": "unlimited" }, "file_size_blocks": { "soft": "unlimited", "hard": "unlimited" }, "max_locked_memory_bytes": { "soft": "unlimited", "hard": 65536 }, "max_memory_size_kbytes": { "soft": "unlimited", "hard": "unlimited" }, "open_files": { "soft": "unlimited", "hard": 4096 }, "stack_size_bytes": { "soft": "unlimited", "hard": "unlimited" }, "cpu_time_seconds": { "soft": "unlimited", "hard": "unlimited" }, "max_user_processes": { "soft": "unlimited", "hard": 4127290 }, "virtual_memory_kbytes": { "soft": "unlimited", "hard": "unlimited" } }, "sharedObjects": [ "/lib64/libdl.so.2", "/lib64/librt.so.1", "/lib64/libstdc++.so.6", "/lib64/libm.so.6", "/lib64/libgcc_s.so.1", "/lib64/libpthread.so.0", "/lib64/libc.so.6", "/lib64/ld-linux-x86-64.so.2" ] } Cách sử dụng# node --report-uncaught-exception --report-on-signal \ --report-on-fatalerror app.js --report-uncaught-exceptionCho phép tạo báo cáo trên các trường hợp ngoại lệ không bị bắt. Hữu ích khi kiểm tra ngăn xếp JavaScript cùng với ngăn xếp gốc và dữ liệu môi trường thời gian chạy khác. --report-on-signalCho phép tạo báo cáo khi nhận được tín hiệu được chỉ định (hoặc xác định trước) cho quy trình Node.js đang chạy. (Xem bên dưới về cách sửa đổi tín hiệu kích hoạt báo cáo.) Tín hiệu mặc định là SIGUSR2. Hữu ích khi một báo cáo cần được kích hoạt từ một chương trình khác. Trình theo dõi ứng dụng có thể tận dụng tính năng này để thu thập báo cáo theo định kỳ và vẽ sơ đồ tập hợp dữ liệu thời gian chạy nội bộ phong phú cho chế độ xem của họ. Tạo báo cáo dựa trên tín hiệu không được hỗ trợ trong Windows. Trong các trường hợp bình thường, không cần phải sửa đổi tín hiệu kích hoạt báo cáo. Tuy nhiên, nếu SIGUSR2đã được sử dụng cho các mục đích khác, thì cờ này sẽ giúp thay đổi tín hiệu để tạo báo cáo và giữ nguyên ý nghĩa ban đầu của SIGUSR2cho các mục đích đã nói. --report-on-fatalerrorCho phép kích hoạt báo cáo về các lỗi nghiêm trọng (lỗi nội bộ trong thời gian chạy Node.js, chẳng hạn như hết bộ nhớ) dẫn đến việc chấm dứt ứng dụng. Hữu ích để kiểm tra các phần tử dữ liệu chẩn đoán khác nhau như đống, ngăn xếp, trạng thái vòng lặp sự kiện, tiêu thụ tài nguyên, v.v. để tìm ra lỗi nghiêm trọng. --report-compactViết báo cáo ở định dạng nhỏ gọn, JSON một dòng, được hệ thống xử lý nhật ký sử dụng dễ dàng hơn so với định dạng nhiều dòng mặc định được thiết kế cho con người. --report-directoryVị trí mà báo cáo sẽ được tạo. --report-filenameTên của tệp mà báo cáo sẽ được viết. --report-signalĐặt hoặc đặt lại tín hiệu để tạo báo cáo (không được hỗ trợ trên Windows). Tín hiệu mặc định là SIGUSR2. Báo cáo cũng có thể được kích hoạt thông qua lệnh gọi API từ ứng dụng JavaScript: process.report.writeReport(); Hàm này nhận một đối số bổ sung tùy chọn filename, là tên của tệp mà báo cáo được viết vào đó. process.report.writeReport('./foo.json'); Hàm này nhận một đối số bổ sung tùy chọn errlà một Error đối tượng sẽ được sử dụng làm ngữ cảnh cho ngăn xếp JavaScript được in trong báo cáo. Khi sử dụng báo cáo để xử lý lỗi trong trình xử lý gọi lại hoặc xử lý ngoại lệ, điều này cho phép báo cáo bao gồm vị trí của lỗi ban đầu cũng như nơi nó đã được xử lý. try { process.chdir('/non-existent-path'); } catch (err) { process.report.writeReport(err); } // Any other code Nếu cả tên tệp và đối tượng lỗi được truyền cho writeReport()đối tượng lỗi phải là tham số thứ hai. try { process.chdir('/non-existent-path'); } catch (err) { process.report.writeReport(filename, err); } // Any other code Nội dung của báo cáo chẩn đoán có thể được trả về dưới dạng Đối tượng JavaScript thông qua lệnh gọi API từ ứng dụng JavaScript: const report = process.report.getReport(); console.log(typeof report === 'object'); // true // Similar to process.report.writeReport() output console.log(JSON.stringify(report, null, 2)); Hàm này nhận một đối số bổ sung tùy chọn err, là một Error đối tượng sẽ được sử dụng làm ngữ cảnh cho ngăn xếp JavaScript được in trong báo cáo. const report = process.report.getReport(new Error('custom error')); console.log(typeof report === 'object'); // true Các phiên bản API hữu ích khi kiểm tra trạng thái thời gian chạy từ bên trong ứng dụng, với kỳ vọng tự điều chỉnh mức tiêu thụ tài nguyên, cân bằng tải, giám sát, v.v. Nội dung của báo cáo bao gồm phần tiêu đề chứa loại sự kiện, ngày, giờ, phiên bản PID và Node.js, phần chứa JavaScript và dấu vết ngăn xếp gốc, phần chứa thông tin đống V8, phần chứa libuvthông tin xử lý và nền tảng OS phần thông tin hiển thị việc sử dụng CPU và bộ nhớ và giới hạn hệ thống. Một báo cáo mẫu có thể được kích hoạt bằng Node.js REPL: $ node > process.report.writeReport(); Writing Node.js report to file: report.20181126.091102.8480.0.001.json Node.js report completed > Khi một báo cáo được viết, thông báo bắt đầu và kết thúc được gửi đến stderr và tên tệp của báo cáo được trả lại cho người gọi. Tên tệp mặc định bao gồm ngày, giờ, PID và một số thứ tự. Số thứ tự giúp liên kết kết xuất báo cáo với trạng thái thời gian chạy nếu được tạo nhiều lần cho cùng một quy trình Node.js. Cấu hình# Cấu hình thời gian chạy bổ sung của quá trình tạo báo cáo có sẵn thông qua các thuộc tính sau của process.report: reportOnFatalErrorkích hoạt báo cáo chẩn đoán về các lỗi nghiêm trọng khi true. Mặc định là false. reportOnSignalkích hoạt báo cáo chẩn đoán về tín hiệu khi true. Điều này không được hỗ trợ trên Windows. Mặc định là false. reportOnUncaughtExceptionkích hoạt báo cáo chẩn đoán về ngoại lệ không cần thiết khi true. Mặc định là false. signalchỉ định mã nhận dạng tín hiệu POSIX sẽ được sử dụng để chặn các trình kích hoạt bên ngoài để tạo báo cáo. Mặc định là 'SIGUSR2'. filenamechỉ định tên của tệp đầu ra trong hệ thống tệp. Ý nghĩa đặc biệt được gắn với stdoutvà stderr. Việc sử dụng những thứ này sẽ dẫn đến báo cáo được ghi vào các luồng tiêu chuẩn liên quan. Trong trường hợp các luồng tiêu chuẩn được sử dụng, giá trị trong directorybị bỏ qua. URL không được hỗ trợ. Mặc định là tên tệp tổng hợp có chứa dấu thời gian, PID và số thứ tự. directorychỉ định thư mục hệ thống tệp nơi báo cáo sẽ được viết. URL không được hỗ trợ. Mặc định là thư mục làm việc hiện tại của quá trình Node.js. // Trigger report only on uncaught exceptions. process.report.reportOnFatalError = false; process.report.reportOnSignal = false; process.report.reportOnUncaughtException = true; // Trigger report for both internal errors as well as external signal. process.report.reportOnFatalError = true; process.report.reportOnSignal = true; process.report.reportOnUncaughtException = false; // Change the default signal to 'SIGQUIT' and enable it. process.report.reportOnFatalError = false; process.report.reportOnUncaughtException = false; process.report.reportOnSignal = true; process.report.signal = 'SIGQUIT'; Cấu hình khi khởi tạo mô-đun cũng có sẵn thông qua các biến môi trường: NODE_OPTIONS="--report-uncaught-exception \ --report-on-fatalerror --report-on-signal \ --report-signal=SIGUSR2 --report-filename=./report.json \ --report-directory=/home/nodeuser" Tài liệu API cụ thể có thể được tìm thấy trong process API documentationphần. Tương tác với người lao động# Môn lịch sử Workerluồng có thể tạo báo cáo giống như cách mà luồng chính thực hiện. Báo cáo sẽ bao gồm thông tin về bất kỳ Công nhân nào là con của chuỗi hiện tại như một phần của workersphần này, với mỗi Công nhân tạo báo cáo ở định dạng báo cáo chuẩn. Luồng đang tạo báo cáo sẽ đợi các báo cáo từ luồng Worker kết thúc. Tuy nhiên, độ trễ cho việc này thường sẽ thấp, vì cả JavaScript đang chạy và vòng lặp sự kiện đều bị gián đoạn để tạo báo cáo.

club888 icon club888

@@ -0,0 +1,76 @@ # This workflow will build a docker container, publish it to Google Container Registry, and deploy it to GKE when a release is created # # To configure this workflow: # # 1. Ensure that your repository contains the necessary configuration for your Google Kubernetes Engine cluster, including deployment.yml, kustomization.yml, service.yml, etc. # # 2. Set up secrets in your workspace: GKE_PROJECT with the name of the project and GKE_SA_KEY with the Base64 encoded JSON service account key (https://github.com/GoogleCloudPlatform/github-actions/tree/docs/service-account-key/setup-gcloud#inputs). # # 3. Change the values for the GKE_ZONE, GKE_CLUSTER, IMAGE, and DEPLOYMENT_NAME environment variables (below). # # For more support on how to run the workflow, please visit https://github.com/GoogleCloudPlatform/github-actions/tree/master/example-workflows/gke name: Build and Deploy to GKE on: release: types: [created] env: PROJECT_ID: ${{ secrets.GKE_PROJECT }} GKE_CLUSTER: cluster-1 # TODO: update to cluster name GKE_ZONE: us-central1-c # TODO: update to cluster zone DEPLOYMENT_NAME: gke-test # TODO: update to deployment name IMAGE: static-site jobs: setup-build-publish-deploy: name: Setup, Build, Publish, and Deploy runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 # Setup gcloud CLI - uses: GoogleCloudPlatform/github-actions/[email protected] with: service_account_key: ${{ secrets.GKE_SA_KEY }} project_id: ${{ secrets.GKE_PROJECT }} # Configure Docker to use the gcloud command-line tool as a credential # helper for authentication - run: |- gcloud --quiet auth configure-docker # Get the GKE credentials so we can deploy to the cluster - run: |- gcloud container clusters get-credentials "$GKE_CLUSTER" --zone "$GKE_ZONE" # Build the Docker image - name: Build run: |- docker build \ --tag "gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA" \ --build-arg GITHUB_SHA="$GITHUB_SHA" \ --build-arg GITHUB_REF="$GITHUB_REF" \ . # Push the Docker image to Google Container Registry - name: Publish run: |- docker push "gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA" # Set up kustomize - name: Set up Kustomize run: |- curl -sfLo kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v3.1.0/kustomize_3.1.0_linux_amd64 chmod u+x ./kustomize # Deploy the Docker image to the GKE cluster - name: Deploy run: |- ./kustomize edit set image gcr.io/PROJECT_ID/IMAGE:TAG=gcr.io/$PROJECT_ID/$IMAGE:$GITHUB_SHA ./kustomize build . | kubectl apply -f - kubectl rollout status deployment/$DEPLOYMENT_NAME kubectl get services -o wide

setup-gcloud icon setup-gcloud

A GitHub Action for configuring the Google Cloud SDK. The Google Cloud SDK includes both the gcloud and gsutil binaries.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.