《技術管理觀點》電子報

工作到現在,覺得還是需要把自己的管理觀點寫下來,但又覺得不太適合寫在這個 Blog 內(還是想把這個 Blog 維持比較技術、新產品類的分享)。所以另外開了一個 Substack 的平台:《技術管理觀點》電子報

目前固定週一會推出一篇技術管理的文章,包含軟體工程師的面試報到培育績效評估晉升等。也有不定期出刊的閒聊文章,例如談技術債

如果對管理有興趣,想與我討論的話,可以在平台內留言,或是到 Facebook 粉絲團:技術管理觀點 私訊唷!

MCO Visa debit 卡,在台灣可以申請到的加密貨幣金屬卡

實體的卡片照片,在台灣難得可以拿到的金屬卡

這是一張蠻特別的卡片,由加密貨幣交易所新創 crypto.com 發行。需要抵押 50 MCO(約新台幣 8,000)元六個月,即可取得一張「金屬」的 debit card。六個月後,可以把這 8,000 取回,可以直接刷卡花掉,或是透過 ATM 提領出來(國泰世華ATM不收手續費)。

我在 4 月申請的,因為疫情的關係,卡片五月中才到;但最近改用 DHL 寄送之後,通常兩三天就會到了。

到六月底為止,在家樂福(需用 line pay)、UberEats 消費,皆回饋 10%

你可以透過信用卡儲值(手續費1%)到卡片內,再透過卡片消費,或是將比特幣、以太幣換成法幣後再消費也可以。

如果透過我的連結申請 https://platinum.crypto.com/r/gbb3ut2h5g,當抵押完成後,我們雙方都可以獲得等值美金 50 元的 MCO 幣。你可以直接換成法幣然後在家樂福消費。

使用 pt-stalk 找出 MySQL 效能問題

pt-stalkPercona Toolkit for MySQL 裡面的其中一項工具。它會連到 MySQL Server,監控指定的數值,當超過指定的 Threshold 時,收集當時資料庫執行的資訊(包含正在進行的 transaction、vmstat、lsof,甚至 gdb stack trace),方便分析解決問題。

pt-stalk 需要以 root 權限執行。執行的方法如下:

pt-stalk --daemonize --variable Threads_connected --threshold 400 -- --defaults-file=/etc/mysql/my.cnf

當同時有 400 以上的 Threads 時,便會收集資料,存到 /var/lib/pt-stalk 內。收集的資料範例:

2014_01_13_00_25_09-df              2014_01_13_00_25_09-lock-waits      2014_01_13_00_25_09-netstat         2014_01_13_00_25_09-ps
2014_01_13_00_25_09-disk-space      2014_01_13_00_25_09-log_error       2014_01_13_00_25_09-netstat_s       2014_01_13_00_25_09-slabinfo
2014_01_13_00_25_09-diskstats       2014_01_13_00_25_09-lsof            2014_01_13_00_25_09-opentables1     2014_01_13_00_25_09-sysctl
2014_01_13_00_25_09-hostname        2014_01_13_00_25_09-meminfo         2014_01_13_00_25_09-opentables2     2014_01_13_00_25_09-top
2014_01_13_00_25_09-innodbstatus1   2014_01_13_00_25_09-mpstat          2014_01_13_00_25_09-output          2014_01_13_00_25_09-transactions
2014_01_13_00_25_09-innodbstatus2   2014_01_13_00_25_09-mpstat-overall  2014_01_13_00_25_09-pmap            2014_01_13_00_25_09-trigger
2014_01_13_00_25_09-interrupts      2014_01_13_00_25_09-mutex-status1   2014_01_13_00_25_09-processlist     2014_01_13_00_25_09-variables
2014_01_13_00_25_09-iostat          2014_01_13_00_25_09-mutex-status2   2014_01_13_00_25_09-procstat        2014_01_13_00_25_09-vmstat
2014_01_13_00_25_09-iostat-overall  2014_01_13_00_25_09-mysqladmin      2014_01_13_00_25_09-procvmstat      2014_01_13_00_25_09-vmstat-overall

然後看 InnoDB status,可以看到很多 transaction 正在等 query cache lock:

MySQL thread id 688253701, OS thread handle 0x7f6a591c9700, query id
19004545452 10.1.1.94 pixblog Waiting for query cache lock
SELECT * FROM `blogarticle` WHERE (`blogarticle_blogid` = 3835626) AND
(`blogarticle_date` < 1388605724) AND (`blogarticle_status` IN (2,3,5,7))
ORDER BY `blogarticle_date` desc, `blogarticle_id` desc LIMIT 1
---TRANSACTION 144B7B32FC, not started
MySQL thread id 688253702, OS thread handle 0x7f6a787bc700, query id
19004544621 10.1.1.191 pixblog Waiting for query cache lock
SELECT * FROM `blog` WHERE `blog_id` = 3126963
---TRANSACTION 144B7B32FD, not started
MySQL thread id 688253706, OS thread handle 0x7f6a887e2700, query id
19004544620 10.1.1.166 pixblog Waiting for query cache lock
SELECT * FROM `bloglayout` WHERE `bloglayout_id` = 3063007
---TRANSACTION 144B7B33C7, not started starting index read
mysql tables in use 1, locked 0

發生問題的當時確實有一個跑統計報表的 Slow Query 正在執行,於是要求該 Query 不使用 Query Cache1 來解決問題。

AWS AutoScaling 終於有 Web 管理介面了…

連結:AWS 推出 AutoScaling 管理介面

使用 IaaS 這類的服務,最方便的地方就是:當有緊急需求需要增加伺服器的時候,可以直接在網頁上點一點就完成增加的動作。但是,如果收到簡訊告警的時候,剛好在沒有網路的地方,就只好遠端電話遙控同事到網頁上操作,總覺得不是那麼方便。AWS 提供的 AutoScaling 服務,可以預先設定一些條件(例如 CPU 使用率超過多少,或是 Elastic Load Balance 的 Requests/sec 數量超過多少),當滿足這些條件時,自動增加(或減少)伺服器。原本這個功能只能透過 API 設定,今天終於有網頁版了…

使用 AutoScaling 網頁介面,除了可以開一般的 Instance 以外,還可以開 Spot Instance。對於需要大量運算資源,但是即時性要求不那麼高的服務來說,可以省下不少費用。

MySQL 5.5 的 InnoDB Memcached Plugin

之前曾經提過 HandlerSocket – A NoSQL Plugin for MySQL,可以透過類似 NoSQL 的方式存取 InnoDB,效能會比普通 SQL 更好。後來 Oracle 在 MySQL 5.5 推出的時候,直接使用 Memcached Protocol,理論上應該是更方便(因為 Memcached Adapter 到處都有…)。

於是最近仔細的研究了一下,發現要使用 MySQL 5.5 的 InnoDB Memcached Plugin,要注意以下的地方:

  1. 如果要使用自行指定的 Table,需要參考 Internals of the InnoDB memcached Plugin,在 innodb_memcache.containers 設定 key 與 column 的對應表。
  2. 預設是使用 containers Table 裡面 name 為 default 的 Table。
  3. 如果要指定 Table,要在 GET 或 SET 指令前,下 GET @@nameSET @@name 將之後的 Request 都切換到 name 這個 Table。
  4. 如果需要 Replication,記得要設定 innodb_api_enable_binlog 這個值。

大概重點就這些了,如果還有玩到別的再來補充。

徵才:PIXNET 徵網路系統工程師一名

我現在服務的公司 PIXNET 要徵求一名 System Administrator:

工作內容:

  • 伺服器 (主要為 FreeBSD 與 Debian、Ubuntu 系統) 系統維護,包括套件 (ports 與 apt/deb) 維護
  • 機房與辦公室網路設備 (Cisco/Juniper Router、Switch、VPN) 維護。

工作時間:9:30 ~ 18:30 (一~五),特殊狀況時 (例如晚上處理緊急事件,或是凌晨停機等) 另外補休。
就職日:可馬上就職,或 2012 年二月到職即可。
地點:台北市中山區 (捷運行天宮站旁),機房於台北市內湖區。
需求:熟悉 UNIX-like 系統,Script (Perl, Python 或 shell script 之一) 撰寫。熟 Cisco 網路設備操作者佳。
薪資:約 40k/month,其他技能面議另談。

有意者請聯絡 techjob@pixnet.tw

Google Chrome 全球市佔率超過 Mozilla Firefox,位居第二

根據 statcounter 的統計:

台灣則是在今年七月份就超過了:

於是有人在討論Google Chrome會不會是下一個IE6。配合之前 ppk 的擔憂:Mobile Safari 會不會是行動裝置上的 IE6?

我倒是覺得 Web Developer 的堅持比以上的所有討論都重要的多。畢竟,寫出 IE only 網站的,並不是 Microsoft,而是不夠專業的開發者。