下載: http://gearman.org/index.php?id=download
作業系統:CentOS
前置作業:yum install libevent-devel , boost –with-program-options , yum libdrizzle-devel
drizzle 好像是一個 MySQL 的分支,是要處理擴展性跟底層修改測試部份的專案,所以他也可以跟原生的 MySQL 溝通,
要先裝好 libdirzzle-devel ,這樣在裝 gearmand 的時候 configuration 才會啟用 libdrizzle 可以把 job 的資料配合存進 MySQL 內的佇列。
但是在 0.20 的 gearmand 在這部份有些問題 自動建立表跟插入的 SQL 有錯,可以參考下面這個修正再重編譯,算是少兩個逗號吧 Create 跟 Insert 的地方
https://code.launchpad.net/~clint-fewbar/gearmand/fix-sql-regression/+merge/59064
後來 Woker 在處理 Queue 時出錯…,訊息如下:
ERROR [ proc ] snprintf(DELETE)(Success) -> libgearman-server/plugins/queue/drizzle/queue.cc:416
ERROR [ proc ] Remove from persistent queue(QUEUE_ERROR) -> libgearman-server/server.c:495
https://bugs.launchpad.net/gearmand/+bug/778306
參考上面這篇的問題一樣改 queue.cc 裡面,維護者說已經修正過了,所以去找一下 build 版本的 source code
所以改這段~
- if (query_size < 0 || query_size > (ssize_t)sizeof(query)) + if (query_size < 0 || size_t(query_size)> query.size())
改完上面的好像跑來就ok了~可以測不開 Woker 只跑 client ,job 就會進 Queue 裡面了~
其他細節待續 ,…趕林揚…伺服器被打雷打掉了沒有細節了~
開伺服器的命令,主要指定 libdrizzle 的 host 跟 user 跟資料表還有 bug 不能指定 mysql 密碼…
vvv 是 log 顯示等級
$ gearmand -u apache --queue-type=libdrizzle --libdrizzle-host=antslab.tw --libdrizzle-user=assist --libdrizzle-db=assist --libdrizzle-table=global_gearman_queue --libdrizzle-mysql -vvv &
參考資料:
- Gearman for MySQL http://www.ningoo.net/html/2009/gearman-for-mysql.html
- drizzle 專案 https://launchpad.net/libdrizzle
- IBM 用 Gearman 分發 PHP 應用程序的工作負載 http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/
- Tim 利用Gearman來實現遠程監控與管理 http://timyang.net/linux/gearman-monitor/
- Jaceju http://www.jaceju.net/blog/archives/1211