實戰 Nginx 設定技巧:連線數與效能
實戰 Nginx 設定技巧:連線數與效能
這裡針對實際運行服務,記錄一些設定技巧
首先,從 Nginx 的設定檔 /etc/nginx/nginx.conf
nginx.conf 通常為了可將多站點的設定檔獨立分存,一般都會有以下設定,指定將某個資料夾的設定檔 include 到 nginx.conf 裡。
Continue ReadingMarketing, SEO, Web trends, Programming tutorial, Web design, and Life event...
這裡針對實際運行服務,記錄一些設定技巧
首先,從 Nginx 的設定檔 /etc/nginx/nginx.conf
nginx.conf 通常為了可將多站點的設定檔獨立分存,一般都會有以下設定,指定將某個資料夾的設定檔 include 到 nginx.conf 裡。
Continue Reading虛擬貨幣常見有 BTC(比特幣),ETH(以太幣),以及其他應用在各領域的貨幣,例如,AMB(Ambrosus 琥珀幣 針對生產鏈),AGI (SingularityNET, 針對AI),IOST(Internet of Services),YEE
(可參考 https://www.coingecko.com/zh-tw/%E4%BA%A4%E6%98%93%E5%B9%B3%E5%8F%B0/huobi)
這裡介紹目前常見的虛擬貨幣交易方式進行說明:
Continue Reading
Process 是電腦中已執行 Program 的實體 每一個 Process 是互相獨立的 同一個 Process 中會有很多個 Thread ,每一個 Thread 負責某一項功能 同一個 Process 底下的 Thread 共享資源,如 記憶體、變數等
在多執行緒中(Multithreading),執行緒屬於同步機制,在同時間運行的執行緒,若兩個執行緒若同時存取或改變全域變數(Global Variable),則可能發生同步(Synchronization)問題。若執行緒之間互搶資源,則可能產生死結(Deadlock)
Coroutine的程式概念, 在1958年由Melvin Edward Conway提出, 是一種類似多執行緒的單執行緒程式概念, 且可以避開多執行緒的race condition問題, 因為他是單執行緒!!!, 所以不會有第二個執行緒來搶著操作.
Coroutine Coroutine 屬於非同步機制,在執行過程擁有自己的上下文,同時具有可暫時儲存上下文的機制,當一個 Coroutine 儲存後,執行完其他任務可在重新進入,並且從上一次執行的狀態繼續進行。這樣的功能讓程式可以達到分段執行。
同執行緒的比較 協程非常類似於執行緒。但是協程是協同運作式多工的,而執行緒典型是搶占式多工的。這意味著協程提供並行性而非並列性。協程超過執行緒的好處是它們可以用於硬性即時的語境(在協程之間的切換不需要涉及任何系統呼叫或任何阻塞呼叫),這裡不需要用來守衛關鍵區段的同步性原語(primitive)比如互斥鎖、號誌等,並且不需要來自作業系統的支援。有可能以一種對呼叫代碼透明的方式,使用搶占式排程的執行緒實現協程,但是會失去某些利益(特別是對硬性即時操作的適合性和相對廉價的相互之間切換)。
Yield Yield 又稱為生成器,也叫作「半協程」,屬於協程的子集。他跟 Coroutine 一樣,都可以分段執行,但兩者還是有差別。首先,Coroutine 可以控制接續執行另一個協成,過某一段時間再切回繼續跑。Yield 只能在呼叫時,被呼叫的對象控制,並且只能在該Yield ,無法跳到其他 Coroutine 。但事實並非這麼絕對,其實可透過一些dispatcher 的模式來透過上層以token等方式控制yield,在邏輯上達到切換到其他 Coroutine 。
Continue Readingsudo lsblk
>>>輸出
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
└─sda1 8:1 0 10G 0 part /
將剩下的空間都分配給 sda1
(注意,這裡 sda 與 1 之間有空格)
Continue Reading解決,Nas 透過靜態路由 Gateway 開通不同網段路由
目前公司有新添購主機,需要將該台主機可開通連結到多個網段,
這裡先說明一下,在內網 192.168.1.42 已經有設定可連結到多網段。
Nas 網路 192.168.1.49 與該台機器位於同網段,因此,只需要在新添購的 Nas 增加靜態路由,
再透過該路由指定 Gateway 的導向路徑到其他網段 (192.168.77.0) 即可

CentOS 安裝 Java 與 Maven 流程
Java環境檢查,若出現 ```-bash:
CVT2HUGO: java: command not found``` 表示未安裝 JAVA
java -version
下載 JAVA
64x
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y
java -version
確認是否存在 maven
mvn -version
安裝 Maven3.6
下載安裝包
wget http://ftp.tc.edu.tw/pub/Apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
解壓縮
tar -zxvf apache-maven-3.6.3-bin.tar.gz
移動Maven目錄
sudo mv apache-maven-3.6.3 /opt
修改Maven目录的User/Group为root
sudo chown -R root:root /opt/apache-maven-3.6.3
以 root 身份登入執行以下命令,設置環境變量
cat > /etc/profile.d/maven.sh <<EOF
export M2_HOME=/opt/apache-maven-3.6.3
export PATH=\$PATH:\$M2_HOME/bin
EOF
source /etc/profile.d/maven.sh
確認安裝
mvn -version
Continue Reading
近期開發產品,需要再非公司的場合應用到固定IP。
由於這次產品使用的場合無法立即取得固定IP網路環境,並且實體網路也沒有的情況下,進行了幾種方式,最終找到可行的方式。
在這裡將流程進行紀錄。
Continue Reading.git 檔案過大,會需要依照當時專案的環境做不同處理,這裡將各種可能的狀況,提供解決方案。
當 .git 檔案過大,伺服器記憶體不足時,會出現以下錯誤:
swap Out of memory, malloc failed (tried to allocate xxxxxxxxxx bytes)
通常會發生這問題,原因都在於這個 git repository 已經使用一定時間,提交次數非常多,導致 .git 檔案過大
例如,.git 檔案就佔據 2Gb
遇到這狀況時,可能遇到一些問題,例如:主機環境是否能變動,commit 資訊是否要保留等
以下針對各種問題,提供對應的解決方法:
Continue Reading這裡支援 Python 2.7, 3.4+
下載瀏覽器 driver ,請依照你瀏覽器目前的版本下載對應的 Driver
在這裡,我們目前 Chrome 版本是 79.x,因此下載的是 chromedriver 79.x版本,
下載完成後,將 driver 放置環境變數,並且給予執行的權限
sudo cp chromedriver /usr/local/bin
sudo chmod +x /usr/local/bin/chromedriver
安裝
pip install -U selenium
//or
pip3 install -U selenium
建立專案
vim test.py
建立爬蟲腳本,前往奇摩首頁,搜尋欄輸入 seleniumhq 後,送出搜尋
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
browser.get('http://www.yahoo.com')
assert 'Yahoo' in browser.title
elem = browser.find_element_by_name('p') # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN)
browser.quit()
執行
Continue Reading工廠模式 (Factory)
在 Design Pattern 中,工廠模式(Factory) 基本的理念是建構一套完整工廠鍊,可以用來生產各種類別品項。
例如,建構資料庫工廠,可以用來產生 mysql, mongodb, redis…. 等物件。
對於使用者而言,他只需要在初始化工廠時,指定要生產的是什麼,
後續在操作資料庫的行為,都會一致。
Continue Reading建構者模式 (Builder)
建構者模式,主要透過條件堆疊取得產物。
每一個堆疊的步驟,都是一個 Builder,例如透過 set 的方式來傳入 Builder。
實際用途,可運用在設計資料庫查詢器的功能,例如,要查詢一個用戶,名字為 john
Continue ReadingAbstract 可以用來定義 Abstract 類、一般方法名稱及參數,Abstract 方法。
一般的方法可以實作邏輯。
如果是 Abstract 方法,則僅作描述,不實作邏輯。邏輯會保留到某個類別繼承(extends)時,來實作(強制)。
透過抽象,可以讓我們定義好規則以及實作一些方法,讓其他類別擴充時,可遵照規則實作,以及直接可使用這些方法。
Continue Reading在本地預計使用docker 建構 mysql ,卻發現 3306 port 被佔用的情況。
這時,透過 刪除指定進程方式,來移除佔用 3306 port 的 process
先將 3306 process 找出,並且移除
Continue ReadingNignx & PHP-FPM 架構中,發送單一請求若header傳輸量過大,就會爆出 request record is too big 的錯誤,
可以檢查是否直接透過http params 方式來夾帶參數
當參數過大,就會導致內容無法送達而爆出錯誤。
Continue Reading使用 Guzzle 只能透過 POST 方式來傳遞 application/x-www-form-urlencoded form params
( 官方原文:form_params - Used to send an application/x-www-form-urlencoded POST request. )
若使用 PUT, DELTE 則需要改用 body 或者 json 格式傳輸,例如:
Continue Reading