<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    使用Graphviz時候遇到這樣一個問題
    IOError: Renderer type: "gif" not recognized. Use one of: canon cmap cmapx dia dot fig hpgl imap ismap mif mp pcl pic plain plain-ext ps ps2 svg svgz vtx xdot
    表現在無法生成gif或者png圖像
    應該是官方一個bug
    解決方案:
    安裝 graphviz-gd
    yum search graphviz-gd
    ========================= Matched: graphviz-gd =========================
    graphviz-gd.x86_64 : Graphviz plugin for renderers based on gd
    好了,裝上這個東西就ok了
    posted @ 2014-02-13 13:25 小馬歌 閱讀(2887) | 評論 (0)編輯 收藏
     

    一些運行在Nginx上的網站有時候會出現“502 Bad Gateway”錯誤,有些時候甚至頻繁的出現。以下是小編搜集整理的一些Nginx 502錯誤的排查方法,供參考:

      Nginx 502錯誤的原因比較多,是因為在代理模式下后端服務器出現問題引起的。這些錯誤一般都不是nginx本身的問題,一定要從后端找原因!但nginx把這些出錯都攬在自己身上了,著實讓nginx的推廣者備受置疑,畢竟從字眼上理解,bad gateway?不就是bad nginx嗎?讓不了解的人看到,會直接把責任推在nginx身上,希望nginx下一個版本會把出錯提示寫稍微友好一些,至少不會是現在簡單的一句 502 Bad Gateway,另外還不忘附上自己的大名。

    Nginx 502的觸發條件

      502錯誤最通常的出現情況就是后端主機當機。在upstream配置里有這么一項配置:proxy_next_upstream,這個配置指定了 nginx在從一個后端主機取數據遇到何種錯誤時會轉到下一個后端主機,里頭寫上的就是會出現502的所有情況拉,默認是error timeout。error就是當機、斷線之類的,timeout就是讀取堵塞超時,比較容易理解。我一般是全寫上的:

    proxy_next_upstream error timeout invalid_header http_500 http_503;

      不過現在可能我要去掉http_500這一項了,http_500指定后端返回500錯誤時會轉一個主機,后端的jsp出錯的話,本來會打印一堆 stacktrace的錯誤信息,現在被502取代了。但公司的程序員可不這么認為,他們認定是nginx出現了錯誤,我實在沒空跟他們解釋502的原理 了……

    503錯誤就可以保留,因為后端通常是apache resin,如果apache死機就是error,但resin死機,僅僅是503,所以還是有必要保留的。

    解決辦法

    遇到502問題,可以優先考慮按照以下兩個步驟去解決。

    1、查看當前的PHP FastCGI進程數是否夠用:

    netstat -anpo | grep "php-cgi" | wc -l

    如果實際使用的“FastCGI進程數”接近預設的“FastCGI進程數”,那么,說明“FastCGI進程數”不夠用,需要增大。

    2、部分PHP程序的執行時間超過了Nginx的等待時間,可以適當增加nginx.conf配置文件中FastCGI的timeout時間,例如:

    http  {
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    ......
    }
    ......

      php.ini中memory_limit設低了會出錯,修改了php.ini的memory_limit為64M,重啟nginx,發現好了,原來是PHP的內存不足了。

      如果這樣修改了還解決不了問題,可以參考下面這些方案:

    一、max-children和max-requests

      一臺服務器上運行著nginx php(fpm) xcache,訪問量日均 300W pv左右。

      最近經常會出現這樣的情況:php頁面打開很慢,cpu使用率突然降至很低,系統負載突然升至很高,查看網卡的流量,也會發現突然降到了很低。這種情況只持續數秒鐘就恢復了。

      檢查php-fpm的日志文件發現了一些線索。

    Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200  Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, “127.0.0.1:9000″  Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll  Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 30587

      在這幾句的前面,是1000多行的關閉children和開啟children的日志。

      原來,php-fpm有一個參數 max_requests,該參數指明了,每個children最多處理多少個請求后便會被關閉,默認的設置是500。因為php是把請求輪詢給每個 children,在大流量下,每個childre到達max_requests所用的時間都差不多,這樣就造成所有的children基本上在同一時間 被關閉。

      在這期間,nginx無法將php文件轉交給php-fpm處理,所以cpu會降至很低(不用處理php,更不用執行sql),而負載會升至很高(關閉和開啟children、nginx等待php-fpm),網卡流量也降至很低(nginx無法生成數據傳輸給客戶端)

      解決問題很簡單,增加children的數量,并且將 max_requests 設置未 0 或者一個比較大的值:

      打開 /usr/local/php/etc/php-fpm.conf調大以下兩個參數(根據服務器實際情況,過大也不行)

    <value name="max_children">5120</value>  <value name="max_requests">600</value>

      然后重啟php-fpm。

    二、增加緩沖區容量大小

      將nginx的error log打開,發現“pstream sent too big header while reading response header from upstream”這樣的錯誤提示。查閱了一下資料,大意是nginx緩沖區有一個bug造成的,我們網站的頁面消耗占用緩沖區可能過大。參考老外寫的修 改辦法增加了緩沖區容量大小設置,502問題徹底解決。后來系統管理員又對參數做了調整只保留了2個設置參數:client head buffer,fastcgi buffer size。

    三、request_terminate_timeout

      如果主要是在一些post或者數據庫操作的時候出現502這種情況,而不是在靜態頁面操作中常見,那么可以查看一下php-fpm.conf設置中的一項:

    request_terminate_timeout

    這個值是max_execution_time,就是fast-cgi的執行腳本時間。

    0s

    0s為關閉,就是無限執行下去。(當時裝的時候沒仔細看就改了一個數字)問題解決了,執行很長時間也不會出錯了。優化fastcgi中,還可以改改這個值5s 看看效果。

    php-cgi進程數不夠用、php執行時間長、或者是php-cgi進程死掉,都會出現502錯誤。

    posted @ 2014-02-12 18:48 小馬歌 閱讀(1117) | 評論 (0)編輯 收藏
     
    感謝Rockux的投遞
    看完之后,終于明白為什么優秀的工程師都去了/想去facebook,因為那里是工程師們的天堂。我對facebook的運轉著迷。這是一個很獨特的環境,不容易被復制(他們的體系并不適合所有的公司,即使他們努力嘗試過)。下面是我和facebook的朋友們關于他們如何開發和管理項目的記錄。
    現在距離我收集的這些信息又過去6個月了,我相信facebook肯定又對他們的項目開發實踐進行了改進。所以這些記錄可能會有點過時。同時facebook的工程師驅動文化也越來越為大眾所知。非常感謝那些幫助我整理這篇文章的facebook的朋友們。

    記錄:

    • 截止到2010年6月,facebook有將近2000名員工,10個月前只有1100名,一年之間差不多翻了一番。
    • 兩個最大的部門是工程師和運維,每個部門大概都是400-500人。這兩個部門人數大約占了公司的一半。
    • 產品經理與工程師的比例大約為1-7到1-10。
    • 每個工程師入職時,都要接收4-6周的培訓,通過修補bugs和聽高級開發工程師的課程來熟悉facebook。
    • 培訓結束后,每個工程師都可以接觸線上的數據庫(更大的權力意味著更大的責任,也有一份"勿做清單",不然可能會被開,比如共享用戶的隱私數據)。
    • 有非常牢靠的安全體系,以免有人不小心/故意做了些不好的事。
    • 每個工程師可以修改facebook的任何代碼,隨時可以遷入。
    • 濃厚的工程師驅動文化。"產品經理基本可以被忽略",這是facebook一名員工的話。工程師可以修改流程的細節,重新安排工作任務,隨時植入自己的想法。
    • 在每月的跨部門會議上,由工程師來匯報工作進度,市場部和產品經理會出席會議,也可以做些簡短的發言,但如果說得太多,很可能就會被打小報告。他們確實想讓工程師來主導產品的開發,對自己的產品負責。
    • 項目需要的資源都是自愿的
    • 一個產品經理把工程師們召集到一起,讓他們對他的想法產生興趣。
    • 工程師們決定開發那些讓他們感興趣的特性。
    • 工程師跟他們的經理說:"我下周想開發這5個新特性"。
    • 經理會讓工程師獨立開發,可能有時會讓他優先完成一些特性。
    • 工程師獨立完成所有的特性——前端/后端/數據庫,等等所有相關的部分。如果需要得到設計人員的幫助,需要先讓設計人員對你的想法產生興趣。其他如架構之類的也一樣。但總體來說,工程師要獨立完成所有的任務。
    • 對于某個特性是否值得開發的爭論,通常是這么解決的:花一個星期的時間完成他,并在小部分人群中(如1%)進行測試。
    • 工程師常常希望解決難題,這能獲得聲望和尊敬。他們很難對前端項目或UI設計產生太大的興趣。這跟其他公司可能正好相反。在facebook,后端任務,比如新的feed算法,廣告投放算法,memcache優化等等,是工程師真正感興趣的。
    • 所有的代碼修改都要進行審核(通過一個或多個工程師),但News Feed是個例外,因為太重要了,Zuckerberg會親自review。
    • 所有的修改至少要被一個人審核,而且這個系統可以讓任何人很方便地審核其他人的代碼,即使你沒有邀請他
    • 工程師負責測試,代碼修復,和維護自己的項目。
    • 每個辦公室或通過VPN連接的員工會使用下一版的facebook,這個版本的facebook會經常更新,通常比公開的早1-12小時。所有的員工被強烈建議提交bugs,而且通常會很快被修復。
    • 很奇怪只有很少的QA或自動測試——"大部分工程師都能寫出基本沒有bug的代碼,只是在其他公司他們不需要這么做。如果有QA部門,他們只要把代碼寫完,扔給他們就行了"
    • [針對上一條]我們有自動測試,代碼發布前必須要通過測試。我們不相信"所有的工程師都能寫出沒有bug的代碼",畢竟這是一個商業公司。
    • 很奇怪,缺少產品經理的影響和控制——產品經理是很獨立的和自由的。產生影響力的關鍵是與工程師和工程師的領導們們搞好關系。需要大致了解技術,不要提一些愚蠢的想法。
    • 所有提交的代碼每周二打包一次。
    • 只要多一分努力,終于一天會發生改變。
    • 星期二的代碼發布,需要所有的提交過代碼的工程師在場。
    • 代碼打包前,工程師必須在一個特殊的IRC channel上。
    • 運維執行打包過程
    • facebook有大約60000臺服務器
    • 有9個代碼發布級別
    • 最小的級別只有6臺服務器
    • 星期二的代碼發布會先發布到6臺服務器上,運維組會檢測這6臺服務器的反應,保證代碼正常工作,然后再提交到下一級
    • 如果發布出現了一些問題(如報錯等等),那么就停止下一級的部署,提交出錯代碼的工程師負責修復問題,然后從頭繼續發布。
    • 所以一次發布可能會經歷幾次重復:1-2-3-fix. 回到1. 1-2-3-4-5-fix. 回到1. 1-2-3-4-5-6-7-8-9
    • 運維組是受過嚴格訓練,倍受尊敬,而且有商業意識的。他們的工作包括分析錯誤日志,負載和內存狀態等等。還包括用戶行為。
    • 代碼發布期間,運維組使用IRC-based頁面系統,可以通過facebook/email/irc/im/sms ping每一個工程師,如果需要他們注意的話。對運維組不做回應是一件很羞愧的事。
    • 代碼一旦發布到第9級,并且穩定運行,就算發布成功了。
    • 如果一個特性沒有按時完成,也沒什么大不了的,下次完成時一并發布即可。
    • 如果被svn-blamed,public shamed或工作經常疏忽就很可能被開除。"這是一個高效的文化"。不夠高效或者不夠聰明的員工會被剔除。管理層會在6個月的時間里觀察你表現,如果不合格,只能說再見。每一級都是這個待遇,即使是C級別和VP級別,如果不夠高效,也會被開除。
    • 被責罵不會導致解雇。我們特別尊重別人,原諒別人。大部分高級工程師都或多或少犯過一些嚴重的錯誤,包括我。但沒有人因此被解雇。
    • 我也沒有遇到過因為上面提到過的犯錯誤而被解雇。有些人犯了錯,他們會非常努力地去修復,也讓其他人得到了學習。
    posted @ 2014-01-23 15:21 小馬歌 閱讀(365) | 評論 (0)編輯 收藏
     
    PHPUnit
    是一個輕量級的PHP測試框架。它是在PHP5下面對JUnit3系列版本的完整移植,是xUnit測試框架家族的一員(它們都基于模式先鋒Kent Beck的設計)

    單元測試是幾個現代敏捷開發方法的基礎,使得PHPUnit成為許多大型PHP項目的關鍵工具。這個工具也可以被Xdebug擴展用來生成代碼覆蓋率報告 ,并且可以與phing集成來自動測試,最合它還可以和Selenium整合來完成大型的自動化集成測試。
    資料:http://phpunit.de/documentation.html

    2 composer
    項目依賴管理工具 資料:http://getcomposer.org/doc/00-intro.md#installation-nix

    3
     syslog-ng  
    集中日志服務器,相比syslog更有優勢 資料:http://www.gaizaoren.org/archives/428

    posted @ 2014-01-23 11:24 小馬歌 閱讀(300) | 評論 (0)編輯 收藏
     

    轉自:http://my.oschina.net/u/200745/blog/36662

    1.引用文件方式

    對include()來說,在include()執行時文件每次都要進行讀取和評估;而對于require()來說,文件只處理一次(實際上,文件內容替換了require()語句)。這就意味著如果有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高。另一方面,如果每次執行代碼時相讀取不同的文件,或者有通過一組文件疊代的循環,就使用include(),因為可以給想要包括的文件名設置一個變量,當參數為include()時使用這個變量。

     2.是否有條件引用

    在PHP變成中,include()與require()的功能相同,但在用法上卻有一些不同,include()是有條件包含函數,而require()則是無條件包含函數。例如在下面的一個例子中,如果變量$somgthing為真,則將包含文件somefile:
    if($something){
    include("somefile");
    }
    但不管$something取何值,下面的代碼將把文件somefile包含進文件里:
    if($something){
    require("somefile");
    }
    下面的這個有趣的例子充分說明了這兩個函數之間的不同。
    $i = 1;
    while ($i < 3) {
    require("somefile.$i");
    $i++;
    }
    在這段代碼中,每一次循環的時候,程序都將把同一個文件包含進去。很顯然這不是程序員的初衷,從代碼中我們可以看出這段代碼希望在每次循環時,將不同的文件包含進來。如果要完成這個功能,必須求助函數include():
    $i = 1;
    while ($i < 3) {
    include("somefile.$i");
    $i++;
    }

     

    3.報錯

     

    用例子來說話,寫兩個php文件,名字為test1.php  和test2.php,注意相同的目錄中,不要存在一個名字是test999.php的文件。
    test.php
    <?PHP
    include  (”test999.php”);
    echo  “abc”;
    ?>

    test2.php
    <?PHP
    require (”test999.php”)
    echo  “abc”;
    ?>

    瀏覽第一個文件,因為沒有找到test999.php文件,我們看到了報錯信息,同時,報錯信息的下邊顯示了abc,你看到的可能是類似下邊的情況:
    Warning: include(test1aaa.php) [function.include]: failed to open stream: No such file or directory in D:\WebSite\test.php on line 2

    Warning: include() [function.include]: Failed opening ‘test1aaa.php’ for inclusion (include_path=’.;C:\php5\pear’) in D:\WebSite\test.php on line 2
    abc

    瀏覽第二個文件,因為沒有找到test999.php文件,我們看到了報錯信息,但是,報錯信息的下邊沒有顯示abc,你看到的可能是類似下邊的情況:
    Warning: require(test1aaa.php) [function.require]: failed to open stream: No such file or directory in D:\WebSite\test.php on line 2

    Fatal error: require() [function.require]: Failed opening required ‘test1aaa.php’ (include_path=’.;C:\php5\pear’) in D:\WebSite\test.php on line 2

    現在就能很清楚的知道include和require的區別:include引入文件的時候,如果碰到錯誤,會給出提示,并繼續運行下邊的代碼,require引入文件的時候,如果碰到錯誤,會給出提示,并停止運行下邊的代碼。

    posted @ 2013-12-25 20:53 小馬歌 閱讀(258) | 評論 (0)編輯 收藏
     
         摘要: from:http://www.searchtb.com/2012/06/rolling-curl-best-practices.html在實際項目或者自己編寫小工具(比如新聞聚合,商品價格監控,比價)的過程中, 通常需要從第3方網站或者API接口獲取數據, 在需要處理1個URL隊列時, 為了提高性能, 可以采用cURL提供的curl_multi_*族函數實現簡單的并發.本文將探討兩種具體的實現方...  閱讀全文
    posted @ 2013-12-13 14:15 小馬歌 閱讀(469) | 評論 (0)編輯 收藏
     
    摘要:Polymer是由原Palm webOS開發Enyo框架的團隊加盟Google后打造的,基于Shadow DOM、Custom Elements、MDV等最新瀏覽器特性,支持Web Components。

    今年的Google I/O大會,絕對是一場為開發者所準備的盛會發布多個軟件產品與服務,并且主要以發布平臺和服務為主,比如讓Android開發者稱贊的Android Studio、推出Google Play Game服務、對地圖進行重大升級等。而在Web平臺領域,Google則發布了最新的Web UI庫Polymer。

    Polymer基于Shadow DOM、Custom Elements、MDV等最新瀏覽器特性,代表了下一代Web框架的方向:一切皆組件、盡量減少代碼量、盡量減少框架限制。由加盟Google的原Palm webOS開發團隊打造。

     

    架構圖

    快速入門

    1.把項目拷貝到解決方案的根目錄文件夾中,參考 Get the code

    1
    git clone git://github.com/Polymer/polymer.git --recursive
    2.啟動Web服務器

    3.在主頁面引用polymer.js

    1
    <script src="Polymer/polymer.js"></script>
    4.閱讀開始指南

    5.學習如何使用Polymer內核快速搭建Web組件

    6.玩轉toolkit-ui示例(必須在Web服務器上運行)

    7.加入mailing list,提問并且得到相應地回復。

    Polymer內核

    Polymer內核代碼由polymer.js這個文件提供,其提供了一個薄層代碼來表示Polymer選項,并且提供了所有組件使用的糖。

    1. 組件聲明
    2. Web組件聲明代碼如下所示:

      1
      2
      3
      4
      5
      6
      7
      8
      <element name="tag-name">
      <template>
      <!-- shadow DOM here -->
      </template>
      <script>
      // lifecycle setup here
      </script>
      </element>

      在該組件中添加Polymer.register生命周期來初始化組件的<script>塊,如下所示:

      1
      2
      3
      4
      5
      6
      7
      8
      <font face="Menlo, Monaco, monospace, sans-serif"><element name="tag-name">
        <template>
          <!-- shadow DOM here -->
        </template>
        <script>
          Polymer.register(this);
        </script>
      </element></font>

    3. 元素初始化
    4. 第一個參數Polymer.register是引用到<element>元素里的,因為腳本在element標記里運行,所以參數就設為“this”。

      你可以提供第二個對象參數到Polymer.register里去定義對象原型,在下面的代碼里,該組件初始化了一個message屬性和ready方法。

      1
      2
      3
      4
      5
      6
      Polymer.register(this, {
      message: "Hello!",
      ready: function() {
      // component is ready now, we can do stuff
      }
      });

    目前,Polymer還處于初期階段,它和其他框架一樣,盡可能地擁抱HTML。它的目標是通過使用像Custom Elements和Shadow DOM這些新興的Web標準的少量獨立polyfill發展Web平臺。此外,應用于移動平臺也是其中的核心目標之一。Polymer開發團隊正在研究響應式組件,讓其可以正確無誤地在臺式機、平板電腦、手機上進行自動化配置。

    當然,Polymer的誕生也意味著Google現在有三個相互競爭的Web應用開發庫:Polymer、Dart(也具有UI開發功能)和AngularJS。

    對于Polymer,開發者有哪些話要說呢?讓我們一起來看下:

    清風一二兩:Palm webOS用另一種方式重生?

    三合一趙:Enyo的Google版~換湯不換藥~

    劉晗的微博:在HTML領域離標準太遠自己搞一套,出路不大。特別是像這種綁定機制,貌似理念是MVC,但MVC這種東西做簡單頁面還行。

    eldude:聲明性質、封裝、數據綁定、屬性和事件驅動API這些都是數量級的,要比現有JavaScript/HTML UI組件簡單。

    neilk:這個框架看起來非常酷,但“built by Google”有點用詞不當,像Closure或Angular、Polymer等這些都Google內部使用的技術,在經過千錘百煉后才像面向公眾,因此稱作 "technologies by Googlers"更為合適。

    相關資料

    Polymer主頁: http://www.polymer-project.org/

    項目主頁上的FAQ描述比較清晰: http://www.polymer-project.org/faq.html 

    架構圖: http://www.polymer-project.org/images/architecture-diagram.svg?20130516

    GitHub: https://github.com/polymer/polymer 

    本文為CSDN編譯整理,未經允許不得轉載,如需轉載請聯系market#csdn.net(#換成@)

    posted @ 2013-12-04 15:20 小馬歌 閱讀(440) | 評論 (0)編輯 收藏
     

    互聯網公司linux運維生產場景常用軟件工具一覽,同時補充了個別常用但不是開源的軟件。

    下午受邀請參加了一個BBS活動,于是有了下面的內容。
    下面是在linux網站運維方向老男孩最近幾年常用的免費的開源軟件,臨時即興想起來的,在這里和大家分享,希望給初學者指引一點路。
    linux的世界真的很精彩,還沒入門的朋友趕緊進來吧!

    操作系統:Centos※,Freebsd,Ubuntu,Redhatlinux,suselinux
    網站服務:apache※,nginx,lighttpd,php※,tomcat※,resin
    數據庫:Mysql※,PostgreSQL,Mysql-proxy,MariaDB
    代理相關:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)
    網站緩存:squid※,nginx※,varnish
    內存緩存:memcached※,memcachedb,TokyoTyrant※,MongoDB,Cassandra※,redis※,tair,CouchDB
    存儲相關:Nfs※,Moosefs※,Hadoop※,gfs※,lustre,FastDFS
    版本管理:cvs,svn※,git
    監控報警:mboy,mrtg,nagios,cacti,zabbix,munin,hyperic
    域名解析:bind,powerdns,dnsmq
    同步軟件:rsync,inotify,sersync,drbd,csync2,union,lsyncd,scp(此行都是※)
    分發工具:Secboy,expect※,puppet※,cfengine※,ssh+rsync+sersync
    虛擬軟件:xen,kvm
    內網軟件:iptables,zebra,iftraf,ntop,tc,iftop
    郵件軟件:qmail※,posfix※,sendmail
    遠程撥號:openvpn,pptp,openswan,ipip
    統一認證:ldap(可結合微軟活動目錄)
    隊列工具:ActiveMQ※,RabbitMQ,MemcacheQ
    打包發布:mvn,ants,jenkins
    測試軟件:apacheab,smokeping,siege,JMeter,Webbench,LoadRunner(此行都是
    日志相關:syslog,rsyslog,Awstats
    DB代理:mysql-proxy,amoeba(更多還是程序實現讀寫分離)
    搜索軟件:Sphinx,Xapian(大公司會自己開發類似百度的小規模內部搜索引擎)

    提示:
    1)以上所有軟件都是老男孩用過或測試過的。
    2)帶的為老男孩最近幾年用的比較多,可信任使用的。也是近年來linux運維的大眾。
    3)有了功能分類和軟件名,大家有需求,可以按功能找軟件直接G就知道了。

    4)學習要有舍有得,什么都抓必然短時間都不會精,希望大家能抓重點,抓精髓,大眾軟件(帶)先熟練了,這是基礎加提高,在研究小眾軟件(不帶),這是高手之路,最后在研究偏門的,世外高手之路,當然前提是先掌握前面的大眾和小眾。
    5)當然還有一些沒有大眾開源的有一些也很棒,如審計堡壘機程序。

    還有用的多的,老男孩落下的,大家補充啊。

    本文出自 “老男孩linux運維” 博客,請務必保留此出處http://oldboy.blog.51cto.com/2561410/775056

    posted @ 2013-11-07 16:12 小馬歌 閱讀(428) | 評論 (0)編輯 收藏
     

    Memcached資源很容易混淆,所以我打包好了.
    下載地址: http://www.euphie.net/downloads/memcached.tar.gz
    下載后解壓,里面有幾個包:
    1.memcached-1.4.15 //Memcached服務端.
    2.memcached-2.1.0 //PHP的Memcached擴展,其實Memcached擴展有兩種,還有一種叫Memcache,不過Memcached比Memcache功能更強大.
    3.libevent-2.0.21-stable //Memcached服務端的依賴包.
    4.libmemcached-1.0.16 //Memcached擴展的依賴包.

    一,安裝Libevent

    #cd libevent-2.0.21-stable #./configure -prefix=/usr/local/libevent #make #make install

    二,安裝Memcached服務端

    #cd memcached-1.4.15 #./configure -prefix=/usr/local/memcached  -with-libevent=/usr/local/libevent #make #make install

    三,啟動Memcached服務

    #/usr/local/memcached/bin/memcached -d -m 50  -u root -p 12000 -c 256 -P /tmp/memcached.pid

    注:
    -d選項是啟動一個守護進程,
    -m是分配給Memcache使用的內存數量,單位是MB.
    -u是運行Memcache的用戶.
    -l是監聽的服務器IP地址,我這里沒有填.
    -p是設置Memcache監聽的端口.
    -c選項是最大運行的并發連接數,默認是1024,按照你服務器的負載量來設定.
    -P是設置保存Memcache的pid文件.

    四,安裝Libmemcached

    #cd libmemcached-1.0.16 #./configure -prefix=/usr/local/libmemcached  -with-memcached=/usr/local/memcached/bin/memcached #make #make install

    注:
    如果報”./libmemcached-1.0/memcached.h:46:27: error: tr1/cinttypes: No such file or directory”錯誤,則需要升級gcc版本.

    五,安裝Memcached PHP擴展

    #cd memcached-2.1.0 找到phpize和php-config的路徑,我的分別是/usr/local/bin/phpize和/usr/bin/php-config. #/usr/local/bin/phpize #./configure --with-php-config=/usr/bin/php-config  --with-libmemcached-dir=/usr/local/libmemcached #make #make install 安裝成功后會生成memcached.so,把路徑加到php.ini的extension=xxx里.
    posted @ 2013-09-27 14:25 小馬歌 閱讀(547) | 評論 (0)編輯 收藏
     
    信號產生方式對進程的影響
    sigint通過ctrl+c將會對當進程發送此信號信號被當前進程樹接收到,也就是說,不僅當前進程會收到信號,它的子進程也會收到
    sigtermkill命令不加參數就是發送這個信號只有當前進程收到信號,子進程不會收到。如果當前進程被kill了,那么它的子進程的父進程將會是init,也就是pid為1的進程

    SIGQUIT
    和SIGINT類似, 但由QUIT字符(通常是Ctrl-\)來控制. 進程在因收到SIGQUIT退出時會產生core文件, 在這個意義上類似于一個程序錯誤信號。

    SIGSTOP
    停止(stopped)進程的執行. 注意它和terminate以及interrupt的區別:該進程還未結束, 只是暫停執行. 本信號不能被阻塞, 處理或忽略.

    SIGKILL
    強制殺死

    頭文件信號詳解
    /* Signals.  */
    #define SIGHUP          1       /* Hangup (POSIX).  */
    #define SIGINT          2       /* Interrupt (ANSI).  */
    #define SIGQUIT         3       /* Quit (POSIX).  */
    #define SIGILL          4       /* Illegal instruction (ANSI).  */
    #define SIGTRAP         5       /* Trace trap (POSIX).  */
    #define SIGABRT         6       /* Abort (ANSI).  */
    #define SIGIOT          6       /* IOT trap (4.2 BSD).  */
    #define SIGBUS          7       /* BUS error (4.2 BSD).  */
    #define SIGFPE          8       /* Floating-point exception (ANSI).  */
    #define SIGKILL         9       /* Kill, unblockable (POSIX).  */
    #define SIGUSR1         10      /* User-defined signal 1 (POSIX).  */
    #define SIGSEGV         11      /* Segmentation violation (ANSI).  */
    #define SIGUSR2         12      /* User-defined signal 2 (POSIX).  */
    #define SIGPIPE         13      /* Broken pipe (POSIX).  */
    #define SIGALRM         14      /* Alarm clock (POSIX).  */
    #define SIGTERM         15      /* Termination (ANSI).  */
    #define SIGSTKFLT       16      /* Stack fault.  */
    #define SIGCLD          SIGCHLD /* Same as SIGCHLD (System V).  */
    #define SIGCHLD         17      /* Child status has changed (POSIX).  */
    #define SIGCONT         18      /* Continue (POSIX).  */
    #define SIGSTOP         19      /* Stop, unblockable (POSIX).  */
    #define SIGTSTP         20      /* Keyboard stop (POSIX).  */
    #define SIGTTIN         21      /* Background read from tty (POSIX).  */
    #define SIGTTOU         22      /* Background write to tty (POSIX).  */
    #define SIGURG          23      /* Urgent condition on socket (4.2 BSD).  */
    #define SIGXCPU         24      /* CPU limit exceeded (4.2 BSD).  */
    #define SIGXFSZ         25      /* File size limit exceeded (4.2 BSD).  */
    #define SIGVTALRM       26      /* Virtual alarm clock (4.2 BSD).  */
    #define SIGPROF         27      /* Profiling alarm clock (4.2 BSD).  */
    #define SIGWINCH        28      /* Window size change (4.3 BSD, Sun).  */
    #define SIGPOLL         SIGIO   /* Pollable event occurred (System V).  */
    #define SIGIO           29      /* I/O now possible (4.2 BSD).  */
    #define SIGPWR          30      /* Power failure restart (System V).  */
    #define SIGSYS          31      /* Bad system call.  */
    #define SIGUNUSED       31
    posted @ 2013-09-26 12:39 小馬歌 閱讀(309) | 評論 (0)編輯 收藏
    僅列出標題
    共95頁: First 上一頁 22 23 24 25 26 27 28 29 30 下一頁 Last 
     
    主站蜘蛛池模板: **aaaaa毛片免费| 一边摸一边桶一边脱免费视频 | 亚洲精品国产精品乱码不99| 中文字幕在亚洲第一在线 | 国产精品国产午夜免费福利看 | 亚洲电影中文字幕| 亚洲女人影院想要爱| 亚洲一区二区三区成人网站| 男女超爽视频免费播放| 最近中文字幕大全免费版在线| 日韩精品无码专区免费播放| 成年人在线免费观看| 亚洲裸男gv网站| 亚洲伊人久久大香线蕉苏妲己| 亚洲看片无码在线视频| jzzjzz免费观看大片免费| 成年免费大片黄在线观看岛国| 免费v片视频在线观看视频| 18gay台湾男同亚洲男同| 永久免费精品影视网站| 久草视频免费在线观看| 久久久久亚洲AV无码专区网站| 一级黄色免费大片| 无码专区—VA亚洲V天堂| 亚洲精品在线免费观看| 亚洲乱人伦中文字幕无码| 4444www免费看| 亚洲人成自拍网站在线观看| 免费**毛片在线播放直播| a在线观看免费网址大全| 亚洲最大中文字幕| 国产免费人成在线视频| 亚洲精品国产摄像头| jjizz全部免费看片| 亚洲bt加勒比一区二区| 在线观看日本免费a∨视频| 天堂亚洲免费视频| 亚洲第一二三四区| free哆啪啪免费永久| 黄色大片免费网站| 四虎国产精品免费视|