主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: TomexOu 於 三月 19, 2005, 01:45:17 上午 前言:
由於pLog 0.32效能太差,儘管調校了mysql等治標的方法,最後在db連線數及主機記憶體仍負荷不了,幾度想要廢服務。但想到mark那麼用心推廣plog,我不能成為pLog社群的失敗例子,因此決定冒然升級為1.0Beta(總比服務暫停好)。 步驟: 1.抓取最新的plog-dev版本(如0318),並進行初次安裝,了解一下plog 1.0的運作設定差異(table數=25)。 2.發現官方plog 1.0 template升級,我最喜歡grey這模版,因為簡單。但grey很醜又不能隨lcd解析度變化(常版塊擠得不像樣),因此改了css及template細微地方,你可在下列網址抓取我改的結果: http://dabu.twbbs.org/plog/index.php?blogId=1 3.備份0.32 db(table數=24)。,升級第一次的升級(update),結果出現: Error creating table: Table 'plog_article_categories_link' already exists Error creating table: Table 'plog_custom_fields_definition' already exists Error creating table: Table 'plog_custom_fields_values' already exists Error creating table: Table 'plog_articles_text' already exists Error modifying table Articles: Duplicate key name 'blog_id_slug_category_id' Error modifying table Article Categories: Duplicate key name 'mangled_name' Error modifying table User Comments: Duplicate key name 'article_id' Error modifying table Notifications: Duplicate key name 'blog_id' Error modifying table Blogs: Duplicate key name 'mangled_blog' name 'user_id_permission_id' 原來是之前為0.32 db加上index的原因,用下列語法來解除index: ALTER TABLE plog_articles DROP INDEX num_reads, DROP INDEX category_id, DROP INDEX blog_id, DROP INDEX user_id; ALTER TABLE plog_articles_categories DROP INDEX blog_id; ALTER TABLE plog_articles_comments DROP INDEX parent_id, DROP INDEX article_id; ALTER TABLE plog_articles_notifications DROP INDEX article_id, DROP INDEX user_id, DROP INDEX blog_id; ALTER TABLE plog_bayesian_filter_info DROP INDEX blog_id; ALTER TABLE plog_bayesian_tokens DROP INDEX blog_id; ALTER TABLE plog_blogs DROP INDEX owner_id; ALTER TABLE plog_filtered_content DROP INDEX blog_id; ALTER TABLE plog_gallery_albums DROP INDEX parent_id, DROP INDEX owner_id; ALTER TABLE plog_gallery_resources DROP INDEX album_id, DROP INDEX owner_id; ALTER TABLE plog_host_blocking_rules DROP INDEX blog_id; ALTER TABLE plog_mylinks DROP INDEX blog_id, DROP INDEX category_id; ALTER TABLE plog_mylinks_categories DROP INDEX blog_id; ALTER TABLE plog_myrecent DROP INDEX blog_id, DROP INDEX category_id, DROP INDEX user_id; ALTER TABLE plog_myrecent_categories DROP INDEX blog_id; ALTER TABLE plog_referers DROP INDEX blog_id, DROP INDEX article_id; ALTER TABLE plog_trackbacks DROP INDEX article_id; ALTER TABLE plog_users_permissions DROP INDEX blog_id, DROP INDEX user_id, DROP INDEX permission_id; 4. 進入資料庫升級階段,它叫我等一回,但我等了10分鐘還沒動作,被騙了>< 之前就看到一次處理500文章數的文章,我想問題可能出現在wizard.php 搜尋: define( "WIZARD_MAX_RECORDS_PER_STEP", 500); define( "WIZARD_MAX_RECORDS_THRESHOLD", 1000); 第二行是主因,因我的原db文章超過1000,這兩行我改了100及999999 5.再還原去除index之後的db,重跑一次,順利升級!! (感動!) (table數=28)。 6.將0.32的gallery/目錄overwrite 1.0的。 7.進入管理介面,在原db相同設定下(url等等),設定值幾乎不用調。我把重點放在頁面快取(cache),在確定模版不會更改下(被效能拖怕了),切換至: 管理面版 » Dabu/Blog網誌 » 全部站台管控 » 模版設定 設定以下的值: template_compile_check = false 停用此功能時,Smarty只有在模版有更改時才會重新產生頁面。停用此功能可以提高系統效能。(更改模版時要重置一下) template_cache_enabled = true 啟用模版快取功能。啟用此功能,快取的版本將會持續被使用,而不需要對資料庫進行資料存取的動作。 template_cache_lifetime = -1 快取存活時間(單位:秒).設為-1快取將永不過期,或設為0來關閉快取功能。 template_http_cache_enabled = true 是否啟用對HTTP連結要求的快取支援。啟用此功能pLog只會傳送必要的內容,可以節省網路頻寬。 8.user要面對的是模板(template),因為策略上要改濾,前版本我採用mark的最新回響/訪客統計之plugin,也採用reic的menu影子,但在beta下一方面可能有bug或常需要更動php,且對1.0 plugin不了解(也沒測試),而且版本間的差異與模版的契合度也是個問題,因此正式版前暫且不加進去(但會去實驗測試)。 結論: 以上是我的升級經驗,雖然很雜,但透露的訊息也有些小用處啦。至目前,我尚未觀察主機的記憶體使用度及db連線數狀態,希望plog 1.0能解決之前的效能困境。 主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: markwu 於 三月 19, 2005, 10:24:25 上午 Hi tomex_ou:
謝謝分享,記得隨時回報狀況,希望效能是有改善。 ps. 我把這一篇放上精華區了。 Mark 主題: 我還是一樣失敗 作者: vinfu 於 三月 22, 2005, 12:24:41 下午 唉
我知道我的問題了 我的資料庫現在是28個項目喔 而且我的是0.3.2版 也就是第一次升級一半失敗後來無法挽救才備分資料庫 有沒有人有語法 可以把資料庫還原成0.3.2阿? 我看我離升級是有很大的一步 每次都死再第二步 真慘 誰能救救我? :'( :'( 主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: TomexOu 於 三月 22, 2005, 02:19:08 下午 你可以把wizard的debug模式啟用(設定true)
它在升級時會顯示執行指令 第二步只是加新table及設定一些index 尚未真正轉換資料 假如之前在這死掉,可能看wizard它做了什麼 手動把index給去除。 ps. 我當初卡有這兒時,就想用手動sql搬移轉換 但mysql都沒有好一點的匯出入工具 遇到值有單引號或utf-8就錯誤,氣死了~~ 還是ms-sql的dts匯出入工具比較好,直接轉換底層的資料 而不用像一般工具都只是背地裏用insert指令等明碼轉換!! (以上小抱怨啦) 主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: markwu 於 三月 22, 2005, 04:29:50 下午 DTS 真的很好用。但是沒辦法用在這。 :-(
Hi vinfu: 你可以把DB記給我研究一下嗎?記得 zip ,要不然太大了。 Mark 主題: Mark 高手謝謝你 作者: vinfu 於 三月 22, 2005, 11:08:22 下午 DB網址已經用私人訊息傳給你了
檔案有點大 因為有700位使用者4000多篇文章 再次謝謝你喔 :-D 主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: markwu 於 三月 23, 2005, 11:57:00 上午 好!我下午來看。
mark 主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: ellenlee 於 三月 23, 2005, 09:34:15 下午 給tomex_ou,
謝謝你的解說,讓我這個文章總數超過1000的使用者成功地轉換了版本 雖然轉換後plog還是無法使用,問題還有一堆,但我再慢慢問問題來解決 為了感謝你,我是想先跟你提一點關於db連結數的問題 我曾經在Pesty Rationnel問過保持連結與非保持連結的問題,他的回答讓我的資料庫連結數降低許多,也讓我的主機公司願意讓我擺plog程式 Pesty說的是: class/database/adodb/drivers/adodb-mysql.inc.php 這個檔裡面有出現過兩次mysql_pconnect 改成 mysql_connect 改掉就可以降低許多資料庫連結數 此討論來自 http://pesty.yichi.org/plog/post/1/155 不好意思我不懂程式,如果有說錯還請見諒 主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: TomexOu 於 三月 23, 2005, 11:34:24 下午 引用自: ellenlee Pesty說的是: class/database/adodb/drivers/adodb-mysql.inc.php 這個檔裡面有出現過兩次mysql_pconnect 改成 mysql_connect 改掉就可以降低許多資料庫連結數 謝謝你的轉敘,這篇文章我有看過,當時我先調校mysql的效能並加上index 但治標的方式最後失敗。 也改預設的pconnect()改成connect(),記憶體用量開始飆升 最後plog 0.32是不會滿連線數,但記憶體過高就停止服務了。 氣了很久,最後才緊急升級為plog 1.0 beta 至目前算是滿意,無論在速度或品質上。 主題: 分享Dabu網誌pLog 0.32升1.0 Beta 0318的經驗 作者: markwu 於 三月 24, 2005, 10:36:30 上午 感謝你們忍受這麼久!呵呵!其實我還是必須說, pLog 如果真的要做一個服務 上萬或是數十萬的會員服務。有很多地方必須調整。
除非有更多人用 pLog ,這樣的情形才能更快顯現。否則我們開發團隊在沒有大量測是的資源與支援下,很難發現這些問題。 再次感謝! Mark |