<s id="qx03x"></s>
  • <tt id="qx03x"><noscript id="qx03x"></noscript></tt><rt id="qx03x"><nav id="qx03x"></nav></rt>

    <strong id="qx03x"><li id="qx03x"></li></strong>
    <tt id="qx03x"></tt>

        1. 分頁: 4/31 第一頁 上頁 1 2 3 4 5 6 7 8 9 10 下頁 最后頁 [ 顯示模式: 摘要 | 列表 ]
            此文為《程序員》雜志約稿,發表在2010年6月刊。

            文章以“KBI用戶行為分析”的項目架構為原型,對Web商業智能平臺的架構設計進行了概要介紹。實現海量數據的分析挖掘計算相對較易,如何以靈活的可擴展性框架,來便捷地應對項目開發周期中,來自眾多項目干系人的需求變更,才是難點。

          每天,縱貫京城

          [不指定 2010-7-23 18:01 | by 張宴 ]
            想要個寶寶,原來的“1室1廳”太小,于是將在公司附近萊鎮香格里小區的房子賣掉,暫時在南三環與南四環之間的角門路,租了個兩居,離老婆單位經濟日報社近一點。我上班的路程也由原來的2公里變成了28公里?!暗罔F4號線”換“地鐵13號線”再換公司班車太折騰,且人多如螞蟻,遂買了輛電動摩托,速度最快50碼,騎行上下班。

            搜狗地圖的路書功能不錯,可以將行駛路程用Flash動畫表示出來。


            最后,懷念一下,我們已經不再擁有的那曾經的家:
            同事下午遇到一問題,MySQL 和 Memcached 對于同一個key,不能對應起來。最終原因是:PHP將key寫入MySQL數據庫之前,沒有經過trim()過濾首尾空格(關鍵是尾部空格),結果:

            1、MySQL的varchar、char類型字段,SELECT .... WHERE 查詢時忽略字段的尾部空格。例如varchar類型字段uidcode中,存儲的含有尾部空格的內容“rewinx ”,通過以下三種方式均可查詢到:

            點擊在新窗口中瀏覽此圖片

            在MySQL手冊第“11.4.1. CHAR和VARCHAR類型”節中寫道(http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char):請注意所有MySQL校對規則屬于PADSPACE類。這說明在MySQL中的所有CHAR和VARCHAR值比較時不需要考慮任何尾部空格。請注意所有MySQL版本均如此,并且它不受SQL服務器模式的影響。



            2、PHP 的 Memcache 擴展,則在set、get時,自動將key中的空格,轉換成了半角下劃線“_”。當然,直接通過 Memcached 協議來讀取,key值“rewinx ”就要寫成“rewinx_”了。
            [文章作者:張宴 本文版本:v1.0 最后修改:2010.06.29 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/httpsqs_1_3/]

            HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 協議的輕量級開源簡單消息隊列服務,使用 Tokyo Cabinet 的 B+Tree Key/Value 數據庫來做數據的持久化存儲。

            項目網址http://code.google.com/p/httpsqs/
            使用文檔http://blog.www.lukangtou.cn/httpsqs/
            使用環境:Linux(同時支持32位、64位操作系統,推薦使用64位操作系統)
            軟件作者:張宴

            隊列(Queue)又稱先進先出表(First In First Out),即先進入隊列的元素,先從隊列中取出。加入元素的一頭叫“隊頭”,取出元素的一頭叫“隊尾”。利用消息隊列可以很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可采取消息隊列來異步插入。另外,還可以將較慢的處理邏輯、有并發數量限制的處理邏輯,通過消息隊列放在后臺處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。

            HTTPSQS 具有以下特征:

            ● 非常簡單,基于 HTTP GET/POST 協議。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP協議的編程語言均可調用。
            ● 非??焖?,入隊列、出隊列速度超過10000次/秒。
            ● 高并發,支持上萬的并發連接,C10K不成問題。
            ● 支持多隊列。
            ● 單個隊列支持的最大隊列數量高達10億條。
            ● 低內存消耗,海量數據存儲,存儲幾十GB的數據只需不到100MB的物理內存緩沖區。
            ● 可以在不停止服務的情況下便捷地修改單個隊列的最大隊列數量。
            ● 可以實時查看隊列狀態(入隊列位置、出隊列位置、未讀隊列數量、最大隊列數量)。
            ● 可以查看指定隊列ID(隊列點)的內容,包括未出、已出的隊列內容。
            ● 查看隊列內容時,支持多字符集編碼。
            ● 源代碼不超過800行,適合二次開發。



            HTTPSQS 1.3 版本增加的功能:

            1、服務器端:

            ● 增加了重要功能:定時將內存緩沖區內容寫到磁盤的功能。
            HTTPSQS 1.2 及以前的版本,只有當內存緩沖區滿的時候,才將內存中的內容寫到磁盤,如果這期間服務器宕機,將導致一部分數據丟失。從 1.3 版本開始,支持了定時(默認5秒鐘/次)將內存緩沖區內容同步到磁盤的功能,可以在啟動 HTTPSQS 時使用“-s <second>”參數設置同步間隔。在 HTTPSQS 運行過程中,可以通過瀏覽器訪問“http://host:port/?name=your_queue_name&opt=synctime&num=間隔秒數”來實時修改同步間隔,無需重啟。

            ● 增加了輔助功能:以JSON格式查看隊列狀態。
            原有的查詢隊列狀態功能“http://host:port/?name=your_queue_name&opt=status”,適合通過瀏覽器訪問,人工查看,不便于程序處理。新增加的功能“http://host:port/?name=your_queue_name&opt=status_json”,以JSON格式輸出隊列狀態信息,便于客戶端程序進行處理,輸出的格式示例如下:
          {"name":"xoyo","maxqueue":1000000,"putpos":4562,"putlap":2,"getpos":900045,"getlap":1,"unread":104517}


            ● 增加了以下四項啟動參數:
          -s <second> 同步內存緩沖區內容到磁盤的間隔秒數(默認值:5)
          -c <num> 內存中緩存的最大非葉子節點數(默認值:10000)
          -m <size> 數據庫內存緩存大小,單位:MB(默認值:100)
          -i <file> 保存進程PID到文件中(默認值:/tmp/httpsqs.pid)


            2、客戶端:

            ● PHP客戶端Class增加了Keep-alive長連接斷線自動檢測、自動重連功能,PHP客服端守護進程從HTTPSQS讀取數據時,不用考慮連接異常斷開處理。非常適合PHP客服端作為守護進程,從隊列GET讀取數據,或者批量往隊列中寫入數據的應用。

            ● PHP客戶端Class增加了函數$httpsqs->status_json($host, $port, $charset, $name);、$httpsqs->synctime($host, $port, $charset, $name, $num);、$httpsqs->pstatus_json($host, $port, $charset, $name);、$httpsqs->psynctime($host, $port, $charset, $name, $num);,詳細使用說明請見:http://blog.www.lukangtou.cn/httpsqs/



            HTTPSQS 1.1/1.2 版本如何升級到 HTTPSQS 1.2 版本:

            ●服務器端版本完全兼容:編譯安裝 HTTPSQS 1.3,替換 HTTPSQS 1.1/1.2,然后“kill httpsqs的進程ID”,按原來的啟動參數啟動 HTTPSQS 即可,數據完全兼容。

            ●客戶端版本完全兼容:HTTPSQS 1.3 版本的PHP客戶端,仍可以直接操作 HTTPSQS 1.1/1.2。兩個版本的PHP客戶端函數使用方式、參數相同,1.3 版本的PHP客戶端與 1.2 版本相比,增加了status_json()、synctime()、pstatus_json()、psynctime()四個函數。



            HTTPSQS 的生產環境應用:

            ●金山通行證(https://my.xoyo.com
            隊列應用類型:手機短信上行、手機短信下發、郵件下發
            隊列應用要求:穩定性高,存儲數據量大
            隊列部署結構:一主、一備兩臺 HTTPSQS 熱備模式

            ●金山用戶行為分析系統(http://kbi.xoyo.com
            隊列應用類型:用戶鼠標點擊、訪問URL原始數據采集
            隊列應用要求:并發性能高,存儲數據量大
            隊列部署結構:多臺 HTTPSQS 應用層哈希分布式模式

            ●金山逍遙網站內搜索
            隊列應用類型:索引準實時更新。在金山游戲官網中,新聞、論壇帖子、客服公告、SNS社區等發生的增、刪、改操作,文本內容實時寫入HTTPSQS隊列,全站搜索引擎增量索引準實時(1分鐘內)更新的數據源取自HTTPSQS。

            ●金山逍遙網全站通用評論系統
            隊列應用類型:評論發表

            ●金山《劍俠情緣》電視連續劇四大角色人物選秀活動(http://zt.xoyo.com/haixuan/
            隊列應用類型:用戶上傳的照片異步裁剪、縮放處理

            ●新浪郵箱(http://mail.sina.com.cn
            隊列應用類型:用戶登陸日志記錄



            HTTPSQS 1.3 版本的詳細使用說明,請訪問: http://blog.www.lukangtou.cn/httpsqs/

            CentOS 5.4 Linux 下的 PHP(FastCGI) 需要連接相關部門的SQL Server 2000數據庫,配置了擴展FreeTDS擴展。

            1、編譯安裝FreeTDS
          mkdir -p /data0/software/
          cd /data0/software/
          wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
          tar zxvf freetds-stable.tgz
          cd freetds-0.82/
          ./configure --prefix=/usr/local/webserver/freetds --with-tdsver=8.0 --enable-msdblib
          make && make install
          cd ../

          echo "/usr/local/webserver/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
          ln -s /usr/local/webserver/freetds/lib/libsybdb.so.5.0.0 /usr/local/webserver/freetds/lib/libsybdb.so.4
          /sbin/ldconfig

          rm -f /usr/local/webserver/freetds/etc/freetds.conf
          vi /usr/local/webserver/freetds/etc/freetds.conf

            輸入以下內容:
          引用
          [global]
                  # TDS protocol version
          ;       tds version = 4.2

                  # Whether to write a TDSDUMP file for diagnostic purposes
                  # (setting this to /tmp is insecure on a multi-user system)
          ;       dump file = /tmp/freetds.log
          ;       debug flags = 0xffff

                  # Command and connection timeouts
          ;       timeout = 10
          ;       connect timeout = 10

                  # If you get out-of-memory errors, it may mean that your client
                  # is trying to allocate a huge buffer for a TEXT field.
                  # Try setting 'text size' to a more reasonable limit
                  text size = 64512

                  host = mssql.yourdomain.com
                  port = 1433
                  tds version = 8.0
                  client charset = UTF-8


            2、編譯安裝PHP自帶MSSQL擴展
            進入本地已存在的php-5.2.XX源碼包目錄:
          cd /data0/software/php-5.2.XX/ext/mssql/
          /usr/local/webserver/php/bin/phpize
          ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/webserver/freetds/
          make && make install


            3、在php.ini配置文件中增加mssql.so
          vi /usr/local/webserver/php/etc/php.ini

            增加一行:
          引用
          extension = "mssql.so"


            4、重啟PHP FastCGI
          /usr/local/webserver/php/sbin/php-fpm restart


            5、測試文件(test_mssql.php):
            職位名稱:金山游戲KSG-逍遙網系統工程師
            所屬部門:KSG-逍遙網XOYO
            招聘人數:2人
            工作地點:北京金山軟件大廈
            相關描述:http://job.kingsoft.com/intro.php?id=372

            工作職責:
            1、Linux/Unix 服務器安裝、配置、調優;
            2、常用環境搭建,如:apache、php、mysql、nginx、memcache、svn、vpn、iSCSI等;
            3、系統腳本編寫,數據統計;
            4、配合逍遙網動態應用云計算架構平臺開發。

            任職資格:
            1、熟悉網絡理論(如OSI七層模型,TCP狀態機),網絡協議(TCP/IP)等;
            2、熟悉各種網絡設備的配置調試及故障分析;
            3、熟悉UNIX系統,具備一定的語言開發能力(Perl,PHP,C,shell等)及相關開發工作經驗;
            4、有大型社區網站運維經驗者優先,熟悉分布式架構;
            5、愿意積極主動的思考如何把工作做好;
            6、有團隊合作精神,能夠承受較大的工作壓力。

            簡歷請發至 zhangyan2[at]kingsoft.com(發郵件時[at]請改成@) 或 hr@kingsoft.com(如投給hr郵箱,郵件主題請包含關鍵詞“系統工程師”,便于郵件自動識別分發)



            職位名稱:金山游戲KSG-逍遙網PHP工程師
            所屬部門:KSG-逍遙網XOYO
            招聘人數:4人
            工作地點:北京金山軟件大廈
            相關描述:http://job.kingsoft.com/intro.php?id=494

            工作職責:
            1、熟悉apache+php5 + mysql 開發,1年以上開發經驗;
            2、有PHP主流框架的使用經驗,能自己寫一套MVC框架更佳;
            3、熟悉各種設計模式,并能應用在開發當中;
            4、熟悉json+AJAX技術和模板技術,了解css+div和JavaScript;
            5、熟悉Apache、MySQL和Linux的日常管理和維護,熟悉分布式架構;
            6、有Linux下C語言開發經驗者優先;
            7、具有文檔編寫能力,面向對象的編程思想,優良的編程風格和習慣;
            8、較強的團隊協作能力、溝通能力和學習能力。

            任職資格:
            1、1年及以上PHP web應用程序開發;
            2、熟練使用CSS,HTML,javascript;
            3、扎實的SQL知識,熟練使用MySQL;
            4、良好的SQL ,PL/SQL編程技巧,有在Mysql下的編程;
            5、具有出色的獨立工作能力及團隊合作精神。

            簡歷請發至 zhangyan2[at]kingsoft.com(發郵件時[at]請改成@) 或 hr@kingsoft.com(如投給hr郵箱,郵件主題請包含關鍵詞“PHP”,便于郵件自動識別分發)



            金山軟件公司

            金山軟件公司,自1989年第一款辦公軟件產品WPS1.0投放市場以來,目前已經成為中國最知名的軟件企業之一,是中國領先的應用軟件產品和互聯網服務供應商。

            金山軟件在珠海、北京、成都、大連、深圳五地分設研發中心,2005年成立日本合資公司。公司目前主要涉及軟件和網游兩大核心業務,創造了金山詞霸、WPS Office、金山毒霸、劍俠情緣、封神榜等眾多知名產品。

            2007年10月9日,金山軟件在香港聯交所主板成功上市,股份編號3888。

            金山在不斷成長的20年中,經歷了歲月的洗禮與沉淀。一直以來,金山執著于對技術的創新,在2000多名公司員工中,從事研發相關工作的人員超過總體的60%。因為堅持的奮斗與努力,金山人相信,創造出世界上一流的軟件產品、創造一家世界一流的軟件公司、讓我們的軟件運行在每一臺電腦上,都一定是可以實現的夢想。

            金山游戲

            金山從1995年開始進入游戲產業,成立珠海西山居工作室。1996年之后,《中關村啟示錄》、《劍俠情緣》、《朝鮮戰爭》等單機游戲陸續發布。2003年,金山進入網游產業,做植根于中華文化的網游產品。同年西山居工作室推出首款網游《劍俠情緣網絡版》并大獲成功。

            2004年,金山游戲業務開始飛速發展,陸續成立烈火、亞丁等工作室,并推出《封神榜》、《春秋Q傳》等系列產品。與此同時,《劍俠情緣網絡版》首度進軍臺灣、馬來西亞等海外市場。2005年6月《劍俠情緣網絡版》登陸越南,迅速占領越南網游80%市場份額。

            2009年,金山游戲(之前網游事業部)作為獨立公司運營,簡稱“KSG”。如今,金山游戲主要面向計算機游戲和數字電視娛樂產業,是集自主研發和獨立運營于一體的中國最知名的數字娛樂產品和服務供貨商之一,代表作品包括:劍俠情緣系列、封神榜系列等,其中“劍俠系列”游戲被譽為“中國原創武俠游戲第一品牌”。目前,金山游戲產品注冊人數超過1億4千萬。

            金山游戲擁有員工超過1200人,由研發和運營兩大體系構成,設有西山居、烈火、亞丁、鯨彩、上水軒、七塵齋六大游戲工作室,主要從事大型MMO游戲自主研發,并且控股多家游戲工作室,同時運營超過10款大型MMO游戲。金山游戲運營中心設有網游運營、業務發展、業務拓展、市場、區域營銷、運維、客戶服務等相關運營體系,服務于億萬用戶;同時,在全國七大片區設立20多個分公司和辦事處,覆蓋了全國渠道網絡。

            金山逍遙Xoyo.com

            金山逍遙Xoyo.com是金山游戲官方網站,為金山旗下的各款游戲產品提供網絡營銷服務,包括金山公司網游介紹、客戶服務、在線充值、玩家社區等內容建設和在線服務支持。

            作為金山游戲未來發展戰略中的重要組成部分,金山逍遙Xoyo.com致力于發揮網絡營銷多途徑、低成本的優勢,幫助公司打造各工作室與產品品牌,降低整體營銷成本;同時以“吸引新用戶、服務老用戶”為目標,為金山游戲用戶提供高品質的服務。
            Google 最近提供了 SSL(HTTPS) 搜索功能(https://www.google.com),可以保護用戶的搜索關鍵字和搜索結果不被ISP等第三方機構攔截、竊取,不被墻連接重置。

            國內用戶訪問 https://www.google.com 默認情況下會跳轉到谷歌香港 http://www.google.com.hk,解決方法為先點擊“Google.com in English“訪問 http://www.google.com/ncr (僅需要點擊一次),該網址會種一個Cookie,防止跳轉,再設置搜索語言為中文,再輸入 https://www.google.com 即可,比較麻煩。

            本人將這一復雜的流程簡化為一個域名:ggssl.com,只需要訪問:http://ggssl.com,即可利用腳本快速跳轉到 Google SSL 加密搜索中文版。第一次訪問自動設置并跳轉,以后訪問立即自動跳轉。

            Google SSL 搜索快速跳轉域名:http://ggssl.com
            [文章作者:張宴 本文版本:v1.2 最后修改:2010.05.24 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/nginx_0day/]

            注:2010年5月23日14:00前閱讀本文的朋友,請按目前v1.1版本的最新配置進行設置。

            昨日,80Sec 爆出Nginx具有嚴重的0day漏洞,詳見《Nginx文件類型錯誤解析漏洞》。只要用戶擁有上傳圖片權限的Nginx+PHP服務器,就有被入侵的可能。

            其實此漏洞并不是Nginx的漏洞,而是PHP PATH_INFO的漏洞,詳見:http://bugs.php.net/bug.php?id=50852&edit=1

            例如用戶上傳了一張照片,訪問地址為http://www.domain.com/images/test.jpg,而test.jpg文件內的內容實際上是PHP代碼時,通過http://www.domain.com/images/test.jpg/abc.php就能夠執行該文件內的PHP代碼。

            網上提供的臨時解決方法有:

            方法①、修改php.ini,設置cgi.fix_pathinfo = 0;然后重啟php-cgi。此修改會影響到使用PATH_INFO偽靜態的應用,例如我以前博文的URL:http://blog.www.lukangtou.cn/read.php/348.htm 就不能訪問了。

            方法②、在nginx的配置文件添加如下內容后重啟:if ( $fastcgi_script_name ~ \..*\/.*php ) {return 403;}。該匹配會影響類似 http://www.domain.com/software/5.0/test.php(5.0為目錄),http://www.domain.com/goto.php/phpwind 的URL訪問。

            方法③、對于存儲圖片的location{...},或虛擬主機server{...},只允許純靜態訪問,不配置PHP訪問。例如在金山逍遙網論壇、SNS上傳的圖片、附件,會傳送到專門的圖片、附件存儲服務器集群上(pic.xoyo.com),這組服務器提供純靜態服務,無任何動態PHP配置。各大網站幾乎全部進行了圖片服務器分離,因此Nginx的此次漏洞對大型網站影響不大。



            本人再提供一種修改nginx.conf配置文件的臨時解決方法,兼容“http://blog.www.lukangtou.cn/demo/0day/phpinfo.php/test”的PATH_INFO偽靜態,拒絕“http://blog.www.lukangtou.cn/demo/0day/phpinfo.jpg/test.php”的漏洞攻擊:
          location ~* .*\.php($|/)
          {
                if ($request_filename ~* (.*)\.php) {
                      set $php_url $1;
                }
                if (!-e $php_url.php) {
                      return 403;
                }

                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                include fcgi.conf;
          }


            也可將以下內容寫在fcgi.conf文件中,便于多個虛擬主機引用:
          if ($request_filename ~* (.*)\.php) {
              set $php_url $1;
          }
          if (!-e $php_url.php) {
              return 403;
          }

          fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
          fastcgi_param  SERVER_SOFTWARE    nginx;

          fastcgi_param  QUERY_STRING       $query_string;
          fastcgi_param  REQUEST_METHOD     $request_method;
          fastcgi_param  CONTENT_TYPE       $content_type;
          fastcgi_param  CONTENT_LENGTH     $content_length;

          fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
          fastcgi_param  SCRIPT_NAME        $uri;
          fastcgi_param  REQUEST_URI        $request_uri;
          fastcgi_param  DOCUMENT_URI       $document_uri;
          fastcgi_param  DOCUMENT_ROOT      $document_root;
          fastcgi_param  SERVER_PROTOCOL    $server_protocol;

          fastcgi_param  REMOTE_ADDR        $remote_addr;
          fastcgi_param  REMOTE_PORT        $remote_port;
          fastcgi_param  SERVER_ADDR        $server_addr;
          fastcgi_param  SERVER_PORT        $server_port;
          fastcgi_param  SERVER_NAME        $server_name;

          # PHP only, required if PHP was built with --enable-force-cgi-redirect
          fastcgi_param  REDIRECT_STATUS    200;




            附:文章修改歷史

            ● [2010年05月21日] [Version 1.0] 新建

            ● [2010年05月23日] [Version 1.1] 針對網友michael提出的“如果構造一個形如/..trojan.jpg/dummy.php/?abcd=1,似乎可以繞過防范的nginx配置”,進行了配置修改,防范了此類情況發生。提供測試的URL如下,拒絕漏洞訪問:
            http://blog.www.lukangtou.cn/demo/0day/phpinfo.jpg (里面是PHP代碼)
            http://blog.www.lukangtou.cn/demo/0day/phpinfo.jpg/.php
            http://blog.www.lukangtou.cn/demo/0day/phpinfo.jpg/dummy.php
            http://blog.www.lukangtou.cn/demo/0day/phpinfo.jpg/dummy.php/?abcd=1

            同時兼容正常的PATH_INFO偽靜態請求,測試URL如下:
            http://blog.www.lukangtou.cn/demo/0day/phpinfo.php (這是正常的PHP文件)
            http://blog.www.lukangtou.cn/demo/0day/phpinfo.php/test
            http://blog.www.lukangtou.cn/demo/0day/phpinfo.php/news123.html
            http://blog.www.lukangtou.cn/read.php/348.htm

            ● [2010年05月24日] [Version 1.2] 修正文字描述錯誤。
          Tags: , ,
            [文章作者:張宴 本文版本:v1.1 最后修改:2010.05.18 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/infobright/]

            Infobright是一個與MySQL集成的開源數據倉庫(Data Warehouse)軟件,可作為MySQL的一個存儲引擎來使用,SELECT查詢與普通MySQL無區別。

            一、Infobright的基本特征:
            優點:
            查詢性能高:百萬、千萬、億級記錄數條件下,同等的SELECT查詢語句,速度比MyISAM、InnoDB等普通的MySQL存儲引擎快5~60倍
            存儲數據量大:TB級數據大小,幾十億條記錄
            高壓縮比:在我們的項目中為18:1,極大地節省了數據存儲空間
            基于列存儲:無需建索引,無需分區
            適合復雜的分析性SQL查詢:SUM, COUNT, AVG, GROUP BY

            限制:
            不支持數據更新:社區版Infobright只能使用“LOAD DATA INFILE”的方式導入數據,不支持INSERT、UPDATE、DELETE
            不支持高并發:只能支持10多個并發查詢



            二、Infobright 安裝與基本用法:
            1、下載安裝社區版Infobright二進制Linux版本,端口3307
          ulimit -SHn 65535
          mkdir -p /data0/mysql/3307
          /usr/sbin/groupadd mysql
          /usr/sbin/useradd -g mysql mysql

          cd /usr/local


           ?、?、64位系統:
          wget http://www.infobright.org/downloads/ice/infobright-3.3.1-x86_64-ice.tar.gz
          tar zxvf infobright-3.3.1-x86_64-ice.tar.gz
          mv infobright-3.3.1-x86_64 infobright


           ?、?、32位系統:
          wget http://www.infobright.org/downloads/ice/infobright-3.3.1-i686-ice.tar.gz
          tar zxvf infobright-3.3.1-i686-ice.tar.gz
          mv infobright-3.3.1-i686 infobright

          引用
            新華網北京4月20日電 國務院決定,為表達全國各族人民對青海玉樹地震遇難同胞的深切哀悼,2010年4月21日舉行全國哀悼活動,全國和駐外使領館下半旗志哀,停止公共娛樂活動。

            4月21日全國哀悼日,將去除網站全站所有站點色彩(變灰),悼念遇難同胞,愿死者安息。

            金山逍遙網旗下站點眾多,雖然官網都有統一的頁頭、頁尾,但是,還有一部分站點(例如用戶中心、注冊充值頁面、游戲客戶端內嵌網站、活動專題頁等)頁頭、頁尾不相同。但是,所有站點采用的都是Nginx服務器,95%以上的站點都經過Nginx負載均衡服務器,因此只需要在Nginx負載均衡服務器上,利用sub_filter指令在輸出的HTML中增加一行:

          <style type="text/css">html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }</style>


            就可以實現在IE及IE內核瀏覽器下,所有網站變灰色。步驟如下:

            1、重新編譯Nginx,增加http_sub_module模塊:
          wget http://nginx.org/download/nginx-0.8.35.tar.gz
          tar zxvf nginx-0.8.35.tar.gz
          cd nginx-0.8.35
          ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module
          make && make install
          pkill -9 nginx
          /usr/local/webserver/nginx/sbin/nginx



            2、在nginx.conf配置文件的http {...}大括號內增加以下兩行:
          sub_filter  '</head>'  '<style type="text/css">html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); }</style></head>';
          sub_filter_once on;


            保存后,重新加載配置文件:
          /usr/local/webserver/nginx/sbin/nginx -t
          /usr/local/webserver/nginx/sbin/nginx -s reload



            3、如果某些帶有Flash的頁面仍顯示彩色,或瀏覽器上下滾動條拖動時Flash FLV播放器變花(例如劍網3、劍俠世界官網分流頁),將Flash改為JS輸出(本例為SWFObject):
          <script type="text/javascript" src="http://v.xoyo.com/site/v.xoyo.com/web/js/swf.js"></script>
          <div id="video_content"></div>
          <script type="text/javascript">
          <!--
              var video_player_so = new SWFObject("http://api.v.xoyo.com/external/player.swf?autostart=true&config=http://api.v.xoyo.com/external/video-542.swf", "sotester", "439", "246", "7");
              video_player_so.addParam("wmode", "opaque");
              video_player_so.addParam("allowfullscreen","true");
              video_player_so.addParam("allowscriptaccess","always");
              video_player_so.write("video_content");
          //-->
          </script>


            這樣,整個頁面,包括Flash播放器中的視頻就都變灰色了。
          Tags:
            Sersync 是我們金山逍遙網技術支持部平臺組周洋同學,開發的一款基于 inotify + rsync 的大量文件的多服務器自動同步程序,目前已開源,開源協議為 New BSD License。

            原理:
            使用 Linux 2.6 內核的 inotify 監控 Linux 文件系統事件,被監聽目錄下如果有文件發生修改,sersync 將通過內核自動捕獲到事件,并將該文件利用 rsync 同步到多臺遠程服務器。sersync 僅僅同步發生增、刪、改事件的單個文件或目錄,不像rsync鏡像同步那樣需要比對雙方服務器整個目錄下數千萬的文件,并且支持多線程同步,因此效率非常高。

            應用:
            金山游戲官網的 CMS 內容發布系統。無論編輯通過 Web 還是 FTP 上傳圖片、視頻、附件,還是系統工程師直接去CMS發布服務器上增加、修改、刪除文件,干完這些事情后不用做任何處理,sersync 會自動將發生增、刪、改事件的文件同步到遠程服務器,并可以在文件同步完成后,自動調用 CDN(ChinaCache)緩存刷新接口,刷新發生修改、刪除的文件的訪問 URL。

            更多內容,請訪問項目網址:http://code.google.com/p/sersync/

          Tags: , ,
            以下是我4月2日在“2010年數據庫技術大會”的演講PPT,介紹了 Tokyo Cabinet Key-Value 數據庫的性能優化關鍵參數,以及金山逍遙網在Tokyo Cabinet基礎上實現的TCSQL實時列表緩存數據庫(Version 1.3)。

            PDF格式下載:
          Tags: , , , ,
            書名:《實戰Nginx:取代Apache的高性能Web服務器》
            作者:張宴
            出版社:電子工業出版社
            ISBN號:9787121102479
            出版日期:2010年03月
            字數:430千字
            頁碼:352
            開本:16

            網上書城:
            卓越亞馬遜:http://www.amazon.cn/mn/detailApp/ref=sr_1_1?_encoding=UTF8&s=books&qid=1270279433&asin=B003CHHHB8&sr=8-1
            當當網:http://product.dangdang.com/product.aspx?product_id=20807089&ref=search-0-A
            China-Pub:http://www.china-pub.com/196364
            電子工業出版社書城:http://www.phei.com.cn/bookshop/bookinfo.asp?bookcode=TP102470&booktype=main


            點擊在新窗口中瀏覽此圖片
          Tags: , , , , , , , , , , , , , ,
            [文章作者:張宴 本文版本:v1.0 最后修改:2010.03.18 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/httpsqs_1_2/]

            HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 協議的輕量級開源簡單消息隊列服務,使用 Tokyo Cabinet 的 B+Tree Key/Value 數據庫來做數據的持久化存儲。

            項目網址http://code.google.com/p/httpsqs/
            使用文檔http://blog.www.lukangtou.cn/httpsqs/
            使用環境:Linux(同時支持32位、64位操作系統,推薦使用64位操作系統)
            軟件作者:張宴

            隊列(Queue)又稱先進先出表(First In First Out),即先進入隊列的元素,先從隊列中取出。加入元素的一頭叫“隊頭”,取出元素的一頭叫“隊尾”。利用消息隊列可以很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可采取消息隊列來異步插入。另外,還可以將較慢的處理邏輯、有并發數量限制的處理邏輯,通過消息隊列放在后臺處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。



            HTTPSQS 具有以下特征:

            ● 非常簡單,基于 HTTP GET/POST 協議。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP協議的編程語言均可調用。
            ● 非??焖?,入隊列、出隊列速度超過10000次/秒。
            ● 高并發,支持上萬的并發連接,C10K不成問題。
            ● 支持多隊列。
            ● 單個隊列支持的最大隊列數量高達10億條。
            ● 低內存消耗,海量數據存儲,存儲幾十GB的數據只需不到100MB的物理內存緩沖區。
            ● 可以在不停止服務的情況下便捷地修改單個隊列的最大隊列數量。
            ● 可以實時查看隊列狀態(入隊列位置、出隊列位置、未讀隊列數量、最大隊列數量)。
            ● 可以查看指定隊列ID(隊列點)的內容,包括未出、已出的隊列內容。
            ● 查看隊列內容時,支持多字符集編碼。
            ● 源代碼不超過700行,適合二次開發。



            HTTPSQS 1.2 版本增加的功能:

            1、服務器端:

            ● PUT入隊列、GET出時,1.2版本在Header頭增加了一行Pos,輸出當前隊列“寫入點”或“讀取點”。假設從隊列取出一條消息,這條消息的隊列讀取點Pos為7,將這條消息插入數據庫失敗了,那么,就可以在失敗Pos日志文件中記錄這個隊列點。過段時間后,只要該Pos點的數據未被覆蓋,通過“http://127.0.0.1:1218/?charset=utf-8&name=your_queue_name&opt=view&pos=7”則可以再次取出該條消息,做失敗原因分析或進一步處理。

            ● PUT入隊列時,如果“隊列寫入點”追上“隊列讀取點”,會返回“HTTPSQS_PUT_END”,提示隊列已滿,而不是像1.1版本那樣直接覆蓋未讀數據。

            2、客戶端:

            ● 增加了Perl版本的客戶端。感謝網友tonny0830為HTTPSQS開發了Perl客戶端。

            ● PHP客戶端Class增加了函數$httpsqs->gets($host, $port, $charset, $name)、$httpsqs->pgets($host, $port, $charset, $name),詳細使用說明請見:http://blog.www.lukangtou.cn/httpsqs/



            HTTPSQS 1.1 版本如何升級到 HTTPSQS 1.2 版本:

            ●服務器端版本完全兼容:編譯安裝 HTTPSQS 1.2,替換 HTTPSQS 1.1,然后“kill httpsqs的進程ID”,按原來的啟動參數啟動 HTTPSQS 即可,數據完全兼容。

            ●客戶端版本完全兼容:HTTPSQS 1.1 版本的PHP客戶端,仍可以直接操作 HTTPSQS 1.2。兩個版本的PHP客戶端函數使用方式、參數相同,1.2 版本的PHP客戶端與 1.1 版本相比,增加了gets()和pgets()函數,用于從一個隊列中取出文本信息和當前隊列讀取點Pos。



            HTTPSQS 1.2 的生產環境典型應用案例架構:

            點擊在新窗口中瀏覽此圖片



            HTTPSQS 1.2 版本的詳細使用說明,請訪問:http://blog.www.lukangtou.cn/httpsqs/

            [文章作者:張宴 本文版本:v6.3 最后修改:2010.07.26 轉載請注明原文鏈接:http://blog.www.lukangtou.cn/nginx_php_v6/]

            前言:本文是我撰寫的關于搭建“Nginx + PHP(FastCGI)”Web服務器的第6篇文章。本系列文章作為國內最早詳細介紹 Nginx + PHP 安裝、配置、使用的資料之一,為推動 Nginx 在國內的發展產生了積極的作用。本文可能不斷更新小版本,請記住原文鏈接“http://blog.www.lukangtou.cn/nginx_php_v6/”,獲取最新內容。第6篇文章主要介紹了Nginx 0.8.x新的平滑重啟方式,將PHP升級到了5.2.14,修正了PEAR問題。另將MySQL 5.1.x升級到了5.5.x系列,配置文件變更較大。

            鏈接:《2007年9月的第1版》、《2007年12月的第2版》、《2008年6月的第3版》、《2008年8月的第4版》、《2009年5月的第5版

            點擊在新窗口中瀏覽此圖片

            Nginx ("engine x") 是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,它已經在該站點運行超過三年了。Igor 將源代碼以類BSD許可證的形式發布。

            Nginx 超越 Apache 的高性能和穩定性,使得國內使用 Nginx 作為 Web 服務器的網站也越來越多,其中包括新浪博客、新浪播客、網易新聞、騰訊網、搜狐博客等門戶網站頻道,六間房、56.com等視頻分享網站,Discuz!官方論壇、水木社區等知名論壇,盛大在線、金山逍遙網等網絡游戲網站,豆瓣、人人網、YUPOO相冊、金山愛詞霸、迅雷在線等新興Web 2.0網站。



            Nginx 的官方中文維基:http://wiki.nginx.org/NginxChs



            在高并發連接的情況下,Nginx是Apache服務器不錯的替代品。Nginx同時也可以作為7層負載均衡服務器來使用。根據我的測試結果,Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 可以承受3萬以上的并發連接數,相當于同等環境下Apache的10倍。

            根據我的經驗,4GB內存的服務器+Apache(prefork模式)一般只能處理3000個并發連接,因為它們將占用3GB以上的內存,還得為系統預留1GB的內存。我曾經就有兩臺Apache服務器,因為在配置文件中設置的MaxClients為4000,當Apache并發連接數達到3800時,導致服務器內存和Swap空間用滿而崩潰。

            而這臺 Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服務器在3萬并發連接下,開啟的10個Nginx進程消耗150M內存(15M*10=150M),開啟的64個php-cgi進程消耗1280M內存(20M*64=1280M),加上系統自身消耗的內存,總共消耗不到2GB內存。如果服務器內存較小,完全可以只開啟25個php-cgi進程,這樣php-cgi消耗的總內存數才500M。

            在3萬并發連接下,訪問Nginx 0.8.46 + PHP 5.2.14 (FastCGI) 服務器的PHP程序,仍然速度飛快。下圖為Nginx的狀態監控頁面,顯示的活動連接數為28457(關于Nginx的監控頁配置,會在本文接下來所給出的Nginx配置文件中寫明):

            點擊在新窗口中瀏覽此圖片

            我生產環境下的兩臺Nginx + PHP5(FastCGI)服務器,跑多個一般復雜的純PHP動態程序,單臺Nginx + PHP5(FastCGI)服務器跑PHP動態程序的處理能力已經超過“700次請求/秒”,相當于每天可以承受6000萬(700*60*60*24=60480000)的訪問量(更多信息見此),而服務器的系統負載也不高:

            點擊在新窗口中瀏覽此圖片

            2009年9月3日下午2:30,金山游戲《劍俠情緣網絡版叁》臨時維護1小時(http://kefu.xoyo.com/gonggao/jx3/2009-09-03/750438.shtml),大量玩家上官網,論壇、評論、客服等動態應用Nginx服務器集群,每臺服務器的Nginx活動連接數達到2.8萬,這是筆者遇到的Nginx生產環境最高并發值。

            點擊在新窗口中瀏覽此圖片



            下面是用100個并發連接分別去壓生產環境中同一負載均衡器VIP下、提供相同服務的兩臺服務器,一臺為Nginx,另一臺為Apache,Nginx每秒處理的請求數是Apache的兩倍多,Nginx服務器的系統負載、CPU使用率遠低于Apache:

            你可以將連接數開到10000~30000,去壓Nginx和Apache上的phpinfo.php,這是用瀏覽器訪問Nginx上的phpinfo.php一切正常,而訪問Apache服務器的phpinfo.php,則是該頁無法顯示。4G內存的服務器,即使再優化,Apache也很難在“webbench -c 30000 -t 60 http://xxx.xxx.xxx.xxx/phpinfo.php”的壓力情況下正常訪問,而調整參數優化后的Nginx可以。

            webbench 下載地址:http://blog.www.lukangtou.cn/post/288/

            注意:webbench 做壓力測試時,該軟件自身也會消耗CPU和內存資源,為了測試準確,請將 webbench 安裝在別的服務器上。

            測試結果:##### Nginx + PHP #####
          引用
          [root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.21/phpinfo.php
          Webbench - Simple Web Benchmark 1.5
          Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

          Benchmarking: GET http://192.168.1.21/phpinfo.php
          100 clients, running 30 sec.

          Speed=102450 pages/min, 16490596 bytes/sec.
          Requests: 51225 susceed, 0 failed.

          top - 14:06:13 up 27 days,  2:25,  2 users,  load average: 14.57, 9.89, 6.51
          Tasks: 287 total,   4 running, 283 sleeping,   0 stopped,   0 zombie
          Cpu(s): 49.9% us,  6.7% sy,  0.0% ni, 41.4% id,  1.1% wa,  0.1% hi,  0.8% si
          Mem:   6230016k total,  2959468k used,  3270548k free,   635992k buffers
          Swap:  2031608k total,     3696k used,  2027912k free,  1231444k cached


            測試結果:#####  Apache + PHP #####
          引用
          [root@localhost webbench-1.5]# webbench -c 100 -t 30 http://192.168.1.27/phpinfo.php
          Webbench - Simple Web Benchmark 1.5
          Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

          Benchmarking: GET http://192.168.1.27/phpinfo.php
          100 clients, running 30 sec.

          Speed=42184 pages/min, 31512914 bytes/sec.
          Requests: 21092 susceed, 0 failed.

          top - 14:06:20 up 27 days,  2:13,  2 users,  load average: 62.15, 26.36, 13.42
          Tasks: 318 total,   7 running, 310 sleeping,   0 stopped,   1 zombie
          Cpu(s): 80.4% us, 10.6% sy,  0.0% ni,  7.9% id,  0.1% wa,  0.1% hi,  0.9% si
          Mem:   6230016k total,  3075948k used,  3154068k free,   379896k buffers
          Swap:  2031608k total,    12592k used,  2019016k free,  1117868k cached




            為什么Nginx的性能要比Apache高得多?這得益于Nginx使用了最新的epoll(Linux 2.6內核)和kqueue(freebsd)網絡I/O模型,而Apache則使用的是傳統的select模型。目前Linux下能夠承受高并發訪問的Squid、Memcached都采用的是epoll網絡I/O模型。

            處理大量的連接的讀寫,Apache所采用的select網絡I/O模型非常低效。下面用一個比喻來解析Apache采用的select模型和Nginx采用的epoll模型進行之間的區別:

            假設你在大學讀書,住的宿舍樓有很多間房間,你的朋友要來找你。select版宿管大媽就會帶著你的朋友挨個房間去找,直到找到你為止。而epoll版宿管大媽會先記下每位同學的房間號,你的朋友來時,只需告訴你的朋友你住在哪個房間即可,不用親自帶著你的朋友滿大樓找人。如果來了10000個人,都要找自己住這棟樓的同學時,select版和epoll版宿管大媽,誰的效率更高,不言自明。同理,在高并發服務器中,輪詢I/O是最耗時間的操作之一,select和epoll的性能誰的性能更高,同樣十分明了。



            安裝步驟:
           ?。ㄏ到y要求:Linux 2.6+ 內核,本文中的Linux操作系統為CentOS 5.3,另在RedHat AS4上也安裝成功)
          分頁: 4/31 第一頁 上頁 1 2 3 4 5 6 7 8 9 10 下頁 最后頁 [ 顯示模式: 摘要 | 列表 ]
          在线精品国产在线视频