mysql5.5禁用innodb引擎方法

[| 不指定 2012/05/30 13:44]
    今天發現有一個備份的mysql數據文件夾異常變大,一查發現是多了三個文件:ibdata1      ib_logfile0  ib_logfile1,前者18m,后兩個各5m,原來是遷移的時候從mysql5.0遷移到了5.5,而5.5關閉innodb啟動不起來,于是我就開啟了innodb,由于innodb會默認增加這幾個數據文件和日志文件,導致變大。嘗試設置數據文件的大小,結果告訴我最小10m,還是太大,于是探索關閉innodb的方法。
    看日志發現說由于mysql程序升級了,需要運行mysql_upgrade升級一下mysql里面的數據庫,這個比較簡單,和mysql命令用法是一樣的,運行一遍就ok了。然后發現還是無法關閉innodb,很奇怪,查了下發現原來mysql5.5默認使用innodb了,所以無法簡單的關閉掉,還要設置一下默認使用的引擎為myisam才可以,在my.cnf里加上如下兩句:

default-storage-engine=MYISAM
innodb=OFF

重啟mysql,然后刪掉那三個討厭的文件即可。





Tags:
    一直對內存操作的速度沒有數值概念,只泛泛的知道memset影響效率,反復分配釋放內存影響效率,具體速度如何,從來沒試過,今天試驗了一下。

    寫了個程序,分配一個指針數組,挨個分配內存,然后挨個釋放。使用的是一臺2核16g內存的虛擬機。gcc版本3.4.2

    先是分配了1w個100字節塊,發現5ms以內即可完成。
    然后擴大到500字節塊,速度沒什么變化。

    然后分配100w個字節塊,平均需要270ms左右。
    字節塊擴大的2k左右,大概5s完成。
    擴大到5k左右,大概12s左右。
    以上數據均為malloc+memset數據和calloc數據,兩者不相上下。

    只malloc不memset,大概能縮短20%左右,可見memset對速度還是有一定影響的,不過對于性能要求不是那么嚴苛的程序,設置一下提高程序穩定性也是值得的。避免某變量忘記初始化出現野值的問題。



Tags:
    wp的速度慢是出了名的,主要是因為php的執行速度比較慢,頁面間require的層數比較多,除了關閉不必要的插件外,在php端做字節碼緩存也有不錯的效果,開啟字節碼緩存很簡單,相關的php擴展也有很多個,在這里選了apc擴展,直接apt-get install php-apc然后重啟php即可。經試驗發現wp的執行時間縮短了一半以上,效果相當的不錯。


    然后發現mysql信息里提示慢查詢的數量比較多,可惜之前沒有開啟記錄,在my.cnf里加上如下三條即可。

log_slow_queries    = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

記錄執行時間超過2秒的和沒有用到索引的查詢日志到mysql-slow.log中,這樣就可以對sql語句進行調優了。



Tags: ,
    對于wordpress開啟靜態化url時如何在nginx下配置重寫rewrite規則,網上一大抄的一個方式是說這樣配置:

    if (!-e $request_filename)
    {
       rewrite ^(.+)$ /index.php?q=$1 last;
    }

    看起來沒什么錯誤,但實際使用中總發現靜態文件也被rewrite走了,去nginx官網發現有了新參數:

    在location /段里加上一句:try_files $uri $uri/ /index.php?q=$uri&$args;


    ok了,輕松愉快。


Tags: ,
    現在數據定期備份,使用的命令是mysqldump -uabc -pabc --lock-all-tables --all-databases > db.sql

    那么備份用的賬號需要哪些權限才能進行這些操作呢?

    首先全局select權限是必須的。由于需要鎖表,所以lock tables權限也需要,還有一個權限,就是reload,也是必須的,這個比較奇怪,猜測可能是導出的數據庫中包含了權限數據庫,所以需要該權限來操作。

    這三個權限就足夠了,再多沒有必要并且會對系統安全性產生影響。


Tags:
    今天下載一個資料,直接下載下不了,掛ssh代理拖又太慢了,著急睡覺,用vps下載發現這個地址還做了防盜鏈,要支持js,運行一下才能對ip進行授權,進而下下來,否則直接返回503錯誤。雖然模擬一下js運行的網絡協議可行,但時間代價太大,那個搞出來都早下完了。于是搞了一個最簡單方法。

     掛代理下載,這樣代理vps的ip得到了授權,然后在vps上直接wget即可。

     但兩臺vps,一臺實驗可行,一臺無效。糾結,可行的那個空間不足了。不過只要有一個行就ok,在有空間的那臺vps上運行ssh -N can@canvps.com -D 127.0.0.1:9001,建立隧道。然后curl --socks5-hostname 127.0.0.1:9001 -o file http://addr/file

      搞定,可以睡覺了。等明天下完了再拖下來。



    從sendmail遷移到postfix,由于在服務器上有郵件轉發服務,之前對于任意目標郵件地址都轉發到固定賬戶,然后由一個分揀程序根據規則分發。sendmail在/etc/mail/sendmail.mc里添加:define(`LUSER_RELAY',`local:default_account')dnl,然后make -C /etc/mail重新編譯一下即可。

    對于postfix就復雜很多了,參數有本地alias,virtual alias等等很多概念,剛開始嘗試virtual alias,用virtual_alias_maps指定對應的正則文件,同時需調用postmap編譯一下正則文件成db。設置了幾條正則,發現總是命中第一條,奇怪,后來在正則表達式都加了^和$進一步限定了一下才好,比較奇怪。但后來發現針對用戶名做alias不可行,因為向外發出的郵件也會做alias,導致無法發郵件出去。
    然后嘗試alias_maps和alias_database,這兩個參數的區別沒看出來,看文檔說是都是針對本地郵件的規則,默認都是/etc/aliases文件,但這個文件不支持正則,因為用的是:alias_maps = hash:/etc/aliases,嘗試了一下alias_maps = regexp:/etc/postfix/aliases,發現會死循環。也比較惡心。當然,這個aliases文件也需要調用newaliases編譯。

    最后又回到使用virtual_alias_maps方式,因為找到了一個方法,原來可以對域設置默認值,這樣只要在/etc/postfix/virtual設置:@domain.com default_account 就ok了。然后使用virtual_alias_maps = hash:/etc/postfix/virtual,重啟postfix即可。



    postfix功能強大,配置也復雜不少,文檔不是很豐富。配置坑很多,有待研究。


Tags:
    今天在一臺新機器上調用mutt時發現一個問題,報找不到dst@example.com這個文件,而dst@example.com是郵件的目的地址,命令在centos上運行正常,在ubuntu上就不行了,查了下,原因是我用了管道向mutt傳送正文,并且用-s指定了標題,目標郵件地址跟在標題后面,導致新版mutt認為目標郵件地址也是一個標題。在地址前加上兩個減號就ok了。

    echo ‘my comment" | mutt -a file -s SUBJECT -- dst@dst.com


    這時還是發現報錯,說郵件過大,原來postfix默認郵件大小是10m,而我發送的備份郵件單封是20m,所以需要在/etc/postfix/main.cf中添加配置:message_size_limit = 0  不限制大小。ok了。



Tags: ,
    前幾天百度快照和流量都恢復了,心情很好,但今天看收錄時突然發現遷移前服務器綁定的那個臨時域名居然也在收錄之列,這個不是一個好的現象,因為如果爬蟲同時對兩個域名同時抓取,會得到相同的內容,對于重復內容是很不利于收錄的。查了下快照,發現百度依舊動作很慢,收錄只有一頁,還是遷移前的那個測試頁,google則全都收錄了,怪不得遷移時google非常活躍,現在回想應該不是爬主域名,很可能是發現那個臨時域名指向的站點大更新,在爬那個。

   糾結的是nginx默認配置居然不打印請求的host域名,無法考證之前爬蟲爬取情況,亡羊補牢,幸虧nginx默認留空了日志第二個字段,打印的是“-”,正好用來打印域名,將-修改為$host,重啟后就打印了。


   對于已經收錄的臨時域名,需要將流量都導入到主域,在nginx里配置了一下301跳轉:

    if ($host = 'tmpdomain.com' )
    {  
        rewrite  ^/(.*)$  http://maindomain.com/$1  permanent;
    }



   ok
Tags: ,

printf空指針NULL的問題

[| 不指定 2012/05/16 17:52]
    今天發現程序中有幾個地方在沒有校驗指針為NULL的時候進行了打印日志操作,在字符串處理函數中使用NULL指針不是什么好事,研究了一下,發現在一些的linux發行版中,printf("%s",NULL)會打印一個“(NULL)”,而在solaris中則會出core,windows下也沒有問題。

    可見不同的c庫對于這個行為的實現不太一致。

    使用中還是要盡量避免這種用法,不過每次打日志前都要判斷指針情況確實比較惡。




分頁: 5/33 第一頁 上頁 1 2 3 4 5 6 7 8 9 10 下頁 最后頁 [ 顯示模式: 摘要 | 列表 ]
一级a做爰片_免费一级特黄大片_日本一级特黄大片 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>