跳到主要內容

發表文章

目前顯示的是 3月, 2024的文章

AWS CloudFormation CFN -Signal

使用CFN-Signal在AWS CloudFormation中確保部署完成 CloudFormation是AWS提供的一個強大的基礎架構即代碼(Infrastructure as Code)服務,它可以讓我們以JSON或YAML格式定義AWS資源並自動化部署它們。然而,有時候在CloudFormation的 Stack 顯示為CREATE_COMPLETE時,實際上某些資源可能尚未完全部署完成,特別是當EC2實例需要執行一些長時間的初始化腳本時。這種情況下,就需要一種方法來通知CloudFormation,讓它知道部署的確已經完成,這就是CFN-Signal的用途所在。 CFN-Signal是一個工具,它可以發送通知給CloudFormation,告訴它特定資源的初始化過程已經完成。讓我們來看看如何在AWS CloudFormation template 中使用CFN-Signal來確保部署的完整性。 步驟一:安裝pip在EC2 首先,在EC2實例上安裝pip,這是Python的套件管理器。 使用以下命令來安裝pip: bash sudo apt update sudo apt install python3-pip -y 步驟二:安裝CFN-Signal 接下來,需要安裝CFN-Signal。使用pip來安裝它: bash sudo pip3 install cfn-signal 步驟三:發通知給CloudFormation 在部署腳本中,當初始化工作完成時,使用CFN-Signal向CloudFormation發送信號。例如,在User Data腳本中,可以添加類似以下的命令: bash #!/bin/bash   # Your initialization script goes here # Signal to CloudFormation that the resource is successfully initialized /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyEC2Instance 這將向CloudFormation發送一個信號,告訴它MyEC2Instance資源的初始化已經完成。請注意,`$?`是退出狀態,如果上一個命令成功執行...

MS SQL 效能調教 - Using the SQL Execution Plan for Query Performance Tuning

MS SQL 效能調教 - Using the SQL Execution Plan for Query Performance Tuning 前言 相信大家都有過這個經驗, 隨著資料庫儲存的資料量越來越大時, 原本查詢的所耗的時間也越來越多, 此時腰做的就是想辦法讓提升查詢效率 Execution Plan 想要調校查詢的效率首先必須要知道每次查詢的bottleneck在哪, 最常見的方式就是去看Execution Plan 假設情境: 這個例子的查詢是從訂單 (Orders) 資料表和客戶 (Customers) 資料表中選擇訂單編號 (OrderID)、訂單日期 (OrderDate) 和客戶名稱 (CustomerName)。該查詢使用了 INNER JOIN 來將這兩個資料表連接起來,並使用 WHERE 條件篩選出訂單日期在 '2023-01-01' 和 '2023-12-31' 之間的記錄。 sql SELECT o.OrderID, o.OrderDate, c.CustomerName FROM Orders o INNER JOIN Customers c ON o.CustomerID = c.CustomerID WHERE o.OrderDate BETWEEN '2023-01-01' AND '2023-12-31' ; 對於這個查詢,Execution Plan 中會出現以下操作: Scan Operators: 對於 Orders 資料表和 Customers 資料表,可能會出現 Scan Operators,這表示 SQL Server 將從這兩個資料表中讀取資料。如果這兩個資料表沒有適當的索引,可能會看到全表掃描 (Table Scan)。 Join Operators: INNER JOIN 操作將兩個資料表 (Orders 和 Customers) 進行連接。在 Execution Plan 中,會顯示 JOIN 操作的類型 (Nested Loops Join、Merge Join 或 Hash Join),以及連接的條件 (o.CustomerID = c.CustomerID)。 Filter Operators: WH...

透過 VS Code 實現遠端開發

透過 VS Code 實現遠端開發 在軟體開發領域中,無縫的協作和高效的工作流程至關重要。隨著像 Visual Studio Code(VS Code)這樣的遠端開發工具的出現,開發人員現在可以在世界各地的任何地方工作,而不會影響生產力或性能。VS Code 中一個強大的功能是其遠端開發擴展包,它使開發人員可以直接從本地開發環境在遠端伺服器、容器和虛擬機上輕鬆工作。 今天,我們將深入探討使用 VS Code 進行遠端開發的細節,特別是基於 SSH 的遠端開發,這是開發人員中很受歡迎的選擇,因為它安全且簡單。 設定 SSH 進行遠端開發 在深入研究使用 VS Code 進行遠端開發之前,建立 SSH 存取您的遠端伺服器是至關重要的。以下是一個逐步指南,幫助您入門: 1. **生成 SSH 金鑰**:首先,在本地機器上使用 `ssh-keygen` 命令生成 SSH 金鑰。這將創建一對公鑰和私鑰。 2. **將公鑰傳送到伺服器**:將公鑰(`~/.ssh/id_rsa.pub`)的內容複製並附加到遠端伺服器上的 `~/.ssh/authorized_keys` 文件。這將允許您的本地機器通過 SSH 與伺服器進行身份驗證。 3. **保護 SSH 目錄**:確保遠端伺服器和本地機器上的 `~/.ssh` 目錄具有適當的權限和所有權。這可以使用 `chmod` 和 `chown` 命令完成,如下所示: bash chmod -R go= ~/.ssh chown -R username:username ~/.ssh 配置 VS Code 進行遠端開發 一旦配置了 SSH 存取,接下來使用 VS Code 做遠端開發就會變得輕而易舉: 1. 安裝遠端開發擴展包 :打開 VS Code 並安裝遠端開發擴展包。該擴展包包括 SSH、容器和 WSL 的擴展,允許在不同環境中輕鬆進行遠端開發。 2. 連接到遠端主機 :按下 `F1` 鍵打開命令面板,選擇“Remote-SSH: Connect to Host”。輸入您的遠端伺服器的 SSH 連接字符串(使用者名@主機名)。 3. 進行身份驗證 :VS Code 將提示您使用 SSH 金鑰進行身份驗證。身份驗證成功後,VS Code 將建立到遠端伺服器的安全 SSH 連接。 4. 開始編碼 :完成!現在已經在 VS Code ...

Performance Testing with wrk: Analyzing Latency and Throughput

Performance Testing with wrk: Analyzing Latency and Throughput Introduction: In the realm of web development, ensuring optimal performance of your application is paramount. Performance testing tools like wrk allow developers to simulate real-world traffic and evaluate how their application performs under various load conditions. In this experiment, we'll delve into using wrk to analyze the latency and throughput of a web application. Experiment: Before diving into the experiment, let's set up wrk. If you haven't already installed it, follow these steps: bash sudo apt-get install build-essential libssl-dev git -y  git clone https://github.com/wg/wrk.git wrk cd wrk make sudo cp wrk /usr/local/bin Now, let's execute a test using wrk: bash e wrk -t10 -c1000 -d10s -T30s --latency 'http://10.1.0.20:5000/parse?q=hello&project=5e1717fb0bdf66011ef82702' Explanation: -t10: Specifies 10 threads to be used for the test. -c1000: Configures 1000 connections to be made ...