如何看待信息學在線評測系統 BZOJ 近期被頻繁卡評測?

從2月16日知乎上出現關於對BZOJ上許可權號漲價問題的討論開始,BZOJ就多次出現故障,有許多人惡意卡評測機,使BZOJ多次陷入癱瘓和無法正常評測的狀態,對此您有什麼看法?

註:BZOJ許可權號調整後500元1年,有半數題目僅對擁有許可權的用戶公開,每年約有上百位演算法競賽選手購買。

註:管理者表示準備調整捐贈費用的問題,調整的原因在於支撐新OJ的推出


強烈譴責這種行為。影響別人的學習很好玩么?

因為這些人的卡評測,我今天的正常訓練計劃被打亂了,相信有很多人也是這樣,寫好了題發現OJ被卡了,然後荒廢一整天。

說實話,BZOJ對實力增長的BUFF是很大的,雖然題目比較難,但是認真地做的話,受益匪淺。

最後,我想說一句:有你卡評測的時間不如多寫幾題。


利益相關:

  • 給bzoj提交過補丁
  • 試圖黑過bzoj
  • bzoj開始收費時第一批許可權用戶(雖然沒交錢而是通過翻譯題目得到的許可權)

  • 寫過oj

題目問的是「如何看待信息學在線評測系統BZOJ近期被頻繁卡評測?」,不過下面許多現役的OI選手都抑制不住心中的怒火。我覺得這是可以理解的,畢竟切身的利益受到了嚴重的損害。因為我已經退役多年,所以我還是從技術角度來分析一下這個事情吧。

首先,bzoj在無人攻擊的情況下就已經很脆弱了,經常宕機,這可以體現出管理層實際上沒有技術人員(高中試圖黑bzoj的時候,我社工過管理員,看起來不太像搞技術的)

從我有限的三腳貓功夫來看,bzoj遠遠不應該被卡成這樣。

我們可以把bzoj看成兩部分,一部分是網頁,一部分是評測機,兩者唯一的聯繫只有資料庫了。web 端負責把資料庫中的信息呈現給大家,把評測請求寫到資料庫中。評測端從資料庫拉取評測請求進行評測,再把評測結果寫到資料庫中。這兩者實際上是高度分離的。所以我們要分析為什麼bzoj會被卡,可以從這兩個角度分析。

評測機

我當時在做競賽的時候,bzoj的評測機只有1台,如果不出意外的話,我猜現在還是只有1台。因為評測任務就是一個實實在在的耗CPU的不可優化的過程,所以要提升服務能力的話,唯一的方法就是增加評測機。

那麼增加評測機不會很貴嗎?不會。

雖然「雲計算」是個噱頭,但是不得不承認的是,基於虛擬化的雲基礎設施大大地方便了我們。現在當我們需要伺服器的時候,我們不需要像以前那樣整月或者整年地購買VPS,更不需要像更早以前那樣自己購買伺服器硬體。現在的VPS提供商大多提供了按量付費的模式,使用多少支付多少,最起碼的可以按小時結算,有的甚至可以精確計費到秒。現在創建並啟動一台VPS的時間也很快,兩三分鐘即可投入工作。如果是基於Docker容器的實例,啟動時間可以縮短至若干秒甚至毫秒。

與之相伴的,就是靈活的創建/銷毀虛擬伺服器的API。放在bzoj這裡,也就是說,當評測端發現評測任務還有很多的時候,程序可以自動直接向虛擬伺服器的提供商發送創建新的虛擬伺服器的請求。不出一會兒,又一台評測機即可上線分擔壓力了。而當發現任務很少,評測機閑置的情況,程序也可以自動發送請求,銷毀多餘的評測機。

從這個角度來看,這樣彈性地分配計算資源,既可以保證不會排長隊,又可以盡量減少網站的費用。(上學期的時候我有想過把這個彈性計算的機制引入到我寫的OJ裡面,但是因為用戶不是很多,所以就沒放進去了╮(╯_╰)╭)

大家不要小看評測機數量的重要性,上學期期末的時候,我開了50台評測機,跑2500+場的AI對戰,40分鐘就跑完了,但是如果只有一台評測機的話……

Web

出現很多評測任務需要排隊是一回事,而網頁打不開是另外一回事了。

實際上bzoj的web負載很輕,只有展示題面、顯示評測信息、提供論壇功能。如果負載高的話,題面可以靜態化,這樣幾乎就不佔CPU了。顯示評測信息的話,性能瓶頸也不在web伺服器,而是在資料庫,只要有做索引,這樣常規的輪詢實際上壓力也不大。discuss因為不是主要功能,實際上用的也很少,基本上也沒什麼壓力。

所以說,bzoj的web端無須什麼特殊的架構(因為確實任務很輕啊!),就理應能正常地運行。那麼為什麼頻頻上不去呢?

唉,其實我也不理解啊,明明這個負載就是很輕嘛……有可能是bzoj用的hustoj有一些比較嚴重的bug,會把php卡掉,然後bzoj又不升級hustoj。但更可能是因為硬體原因,比如網站連同評測機和資料庫跑在一台老的家用電腦上,然後評測負載一大就掛了。

我記得以前bzoj卡還有另一種體現是網頁打得開,但是一個頁面要開很久。這個要麼是帶寬不夠,要麼是被攻擊了。怎麼說呢……我還是覺得丟到雲伺服器上就好了,起碼提供商會保證帶寬的穩定,而且有基本的DDOS防護。

管理

從這個問題的題面來看,這次好像除了技術問題以外,還有一些嚴重的管理問題,就是沒有限制用戶的提交之類的。最簡單的方法,加個驗證碼,就可以擋掉大部分腳本了。然後比如限制提交頻率,限制註冊頻率,又可以擋住很多。

還可以在評測隊列上做文章,比如優先評測不同用戶的提交。(我的OJ有這個優先隊列的設定,還是很實用的)

安全

做OJ的時候最擔心的就是提交代碼的安全問題了,畢竟用戶提交的代碼直接會在伺服器上編譯運行,這還是很可怕的。因為我的OJ的用戶都是自己學校的人,所以沒怎麼在安全性上下過功夫。不過最基本的兩點還是要有:

一是最低許可權,讓用戶程序以盡量低的許可權運行,禁止調用大部分的syscall(實際上這點hustoj做的還是比較不錯的,但是這種 hard-core 的 hacking 還是很難說……)

二是隔離,就算用戶程序突破了預設的限制,我們也不能讓破壞太嚴重。評測機與web一定要分離,最起碼也要開個虛擬機跑評測。這樣真出了問題的話,恢復到之前的快照就可以正常評測了。

總結

總的來說,管理層沒有懂技術的是硬傷。拿了那麼多黑心錢(不是說不該收錢,但好多題目都沒有版權啊),平台還是很不穩定。我從一個稍微懂點技術的人的角度出發,真的好傷心啊,還不如把錢給我呢(逃)

====== 傳送門 ======

我在「如何看待BZOJ開放面向初學者同時對許可權號漲價?」下的回答:如何看待BZOJ開放面向初學者同時對許可權號漲價? - 陳樂群的回答

====== 求star分割線 ======

我寫過兩個OJ。

  • 一個是大一的時候寫的,上個學期又加了點功能,用於AI對戰的評測。GitHub - abcdabcd987/p2dv.in: A website for game AI battle.
  • 另一個是高二的時候寫的,作為校內OI訓練用。GitHub - abcdabcd987/CoFun: A simple Online Judge System designed for Quanzhou No.7 High School OI training.

後面那個肯定是不維護了,代碼質量很低,只能說是簡單粗暴吧,對實現一個OJ有興趣的可以參考一下。前面這個有可能會做成通用的平台,但更可能就是棄坑了,還是那句話,有需要的可以參考吧……


你們感覺不爽就不要卡評測嘛..

大家抱怨歸抱怨,OJ還是要正常用的啊QAQ

賭五毛卡評測人肯定沒一個願意自己掏腰包買個許可權號

----------------------------------------分割線--------------------------------------

QQ上有人說是我之前知乎上的問題帶偏了節奏

冤枉啊大人QAQ

首先我沒有故意帶節奏..

其次我已經是許可權狗了,BZOJ漲價和我又不是利益相關,我幹嘛費勁去黑它

那個問題下面一幫給BZOJ洗地的,總不能是回答問題的人去把OJ爆了吧..


謝邀……

首先,本人OI退役狗一隻,已經好久沒有上BZOJ了,這幾天給自己學校的學弟們講課,想打開BZOJ給大家看道題,結果,WTF 打不開?第二天,我又嘗試了一次,發現還是打不開……連我這樣的退役狗都受到了影響,可以想像這次BZOJ被卡/黑影響到了多少還在BZOJ上刷題的現役選手/熱愛演算法的人。

這種發泄自己的不滿,損害他人利益的行為首先值得譴責。

再者,這次BZOJ被卡的原因據說是因為許可權號漲價。漲沒漲價漲多少我不清楚,但這畢竟是市場行為,想像一下因為某個商品漲價你就打砸商戶,這合理嗎?BZOJ為我們提供了無與倫比的題目資源,幾乎是所有OIer的必刷網站,許多題目在其他網站上難以找到。管理員每天不知道要回復多少郵件,發數據,驗新題,搜羅題目,解決各種卡評測,投入這些人力物力,難道不值得我們花錢支持一下嗎?

就算定價確有不合理之處,也不應該用這樣可以說是違法的方式去表達訴求!何況BZOJ的許可權號真的很貴么……感覺高三光一輪複習資料的錢就能超過這個數目,更別說現在隨便去阿迪耐克買雙鞋子就高過這個價……漲價,說明我國內需旺盛,宏觀經濟向好,人民生活水平提高,是好事嘛!(跑偏了。。)

我從比較小的時候就開始學OI了,雖然說一直沒搞出什麼大名堂……但也見證了許多OI相關的網站,從興盛到落寞甚至消失,最初的OIBH,vijos,到後來rqnoj,tyvj,接著bzoj出現(雖然那個時候我完全不會做bz上的題……),再到現在oj百花齊放。它們承載著我們在OI路上奮鬥的一點一滴,ac的開心或是wa的失落,看著頁面上刷題數一天天增多的自豪感,抑或退役那天數字最終定格的悲傷……bzoj是個好oj,而任何網站想要長久的運行下去都需要資金支持。我不希望曾經伴隨我們前行的bz因為這樣那樣的原因消失,所以我支持bz,如果我還在役,或者將來需要用許可權號的話,我也還是會購買的……

最後,不論大家支持哪一方,都一定要遵紀守法啊&>&<大家都有表達自己訴求的權利,但不能因一時的衝動做出傻事……


謝黃學長邀。

許可權應該到四月就過期了。

記著剛學oi的時候看到這個oj的第一印象是界面非常不好看,於是就去做好看的其他oj了。。

後來才知道,bzoj的題目質量是辣么的高。

感覺按以前的價格,BZOJ許可權號是物超所值的。

畢竟有些東西只能靠自己刷題來掌握。。

(當然漲價是不茲磁的了...)

十分懷念當年一道一道啃bzoj難題的日子QwQ。

(記得當年要數據回復特別快。)

然後,嚴厲譴責卡評測機這種行為。

對oj不爽去discuss噴也好啊。無法容忍這種破壞公共資源的行為。(當然要是某些競爭夥伴惡意來卡的另說。。)。

希望bzoj越辦越好吧w。

---

upd: 快十一月了,怎麼還沒到期。。


卡評測……

無腦OIer:「叫你漲錢,卡死你哈」

一堆OIer:「誒怎麼BZOJ又沒法上啦,啊頓時失去做題的性質了,頹廢去咯」

管理員死命恢復伺服器後:「你們也看到的,評測系統太爛啦!人手不夠維護不過來啦!我們正打算要修修Bug更新一下伺服器配置呢,你看這些都要資金茲瓷吧,所以……「

嘿嘿嘿……

總結:大家在表達自己觀點的時候還是得用恰當的姿勢,卡評測機損害的是廣大OIer做題的權利


我買過BZOJ的許可權,似乎現在還在,然而我已經退役半年了,受邀來說幾句。

兩年前,我學了基礎演算法不知道怎麼繼續進步,在別人教導下,天天上BZOJ做題。即使身在弱校,也能獲得一些不錯的資源,不然弱校選手上哪學習練習進階演算法?大家一起交流,都常是說這是類似BZOJ某個題的做法等等。雖然題目質量良莠不齊,但是好題自然做的人多,寫題解、講授、宣傳的人也多。

我不知道有哪些題目有版權問題,至少我知道有人去計較的話管理員應該會處理吧,反正我實踐過。

覺得許可權貴的話,嫌貴團購或者管理員商量可以打折,甚至你做點貢獻就能免費咯,你出去隨便一周培訓費都得是這十倍吧。我就想問那些噴許可權價格的,給你幾萬酬勞天天幾十人要你改題目加題目要數據,你還要收集題目,解決伺服器問題,干不幹?我一年給管理員發了幾十次郵件,每次都會得到回復,這不夠良心么?

有很多朋友甚至專門出題,翻譯,做數據貢獻給BZOJ,BZOJ包含了很多人的心血。如果哪天關站了,網路上幾萬篇題解也會一併作廢。

無論是反感許可權號,看管理員不爽,有什麼不滿,都不是爆OJ的理由。我希望BZOJ能一直存在下去,當然也祝願各OJ都能越來越好。花樣爆OJ的小朋友們,你們咋不上天呢?


從技術層面看,BZOJ 的 OJ 系統 自身存在很大缺陷。

應對卡評測有很多辦法,分分鐘就能解決。

比如限制提交頻率。

曾經的 CodeVS (wikioi)也是各種卡評測,我高考結束的暑假潛心開發後,再也沒有被長時間卡 Bug ,網站無法訪問的原因出現。

希望 BZOJ 多多吸取教訓。


……雖然說我是比較反對bzoj漲價的……

但是我覺得,這些人的行為,只能被稱為:

媽的智障。

這幫人的行為,就和3DM的那些腦殘用戶一樣。

「敢不讓我們玩?乾脆大家都別玩。」

steam還有WTO罩著,bzoj不知道能不能撐過這一次。


想起原來有個叫wikioi的oj(現在叫codevs)

經常被卡得測評隊列里一長串的惡意提交,我印象中有一次一周多前的惡意提交都還沒評完。。

而且簡直不能理解這些人的動機,就算是偶爾找個樂子,也不至於天天都花一堆精力來卡測評啊。

不知道是不是腦子有問題

當時我基本都在這個題庫做題,這些人搞得我根本沒法學,真的火大,爆了不少粗口。

嫌時間多了玩遊戲都比這個有意思吧。卡測評意義在哪?又不好玩又沒技術含量。自己不學,也不去玩,還要讓別人不能好好學,總結起來只能是:欠揍

這次雖然有發泄oj漲價這個動機,不過依然是傻逼得不行。


謝邀. 似乎這個問題挺熱呢.

bzoj是個好網站呢, 題目多, 題解全. (現在後悔我寫那麼多題解從來不貼題面了) 版權問題什麼的不在細. 似乎也沒聽說oi屆有啥著名的版權之爭啊23333.

bzoj的owner似乎是個學校? 是學校缺錢也無可厚非ovo別人也付出了勞動啊伺服器也是別人的啊別人想怎麼喊價怎麼喊價. 不服你去找工商局去.

攻擊bzoj對廣大oiers似乎也沒啥好處, 似乎還屬於違法行為? 你們可以去吊打攻擊者嘛2333 (幸好我退役早233333

另一方面從oj owner角度來講不僅要注重加題目這種事, 也要提高oj本身的姿勢水平, 搞個又老又丑的hust顯然容易被淦啊. (現在寫oj難道不是oier的必備技能?) 所以說啊...你們oiers真會玩


謝不邀

我覺得無論如何,某在線測評做得怎麼樣,都不能以卡OJ等 干擾正常的OJ秩序去抵制他

無論一個OJ再怎麼不好 終究會有人使用的 卡OJ已經干擾了用戶們之間的正常秩序

以前我覺得卡OJ挺好玩 但是有一次提交了之後 發現OJ被卡得無法評測 我很著急 可是也沒有辦法 只能再去做別的問題 (回來還是沒好)

所以我堅決抵制 所謂"打著公平的旗號 攻擊OJ的行為"

任何事 都要按照基本法來辦 不要因一方之詞 而無理取鬧


卡oj的人不對,被卡的oj掛掉的話更有問題。

Vijos被卡了的話我可是要被抓去群里發紅包的呀(逃


卡不卡評測機靠的是素質,認為貴的或者不好的可以不買不做,但是影響別人做題就不對了。網站炸了對你又有什麼好處呢?神犇成不了蒟蒻,蒟蒻成不了神犇。但願bzoj快點好起來


情緒可以理解,表達方式不當


小學生啊。。


強烈反對卡評測行為!除了影響他人學習之外沒有任何用處


謝謝邀請。

早已退出OI圈子,對此事不了解。

但是我一向是反對這種損人還不利己的行為。

一個網站無論是免費或是收費,都是網站本身的合法行為。卡OJ說嚴重點,已經是違反了法律。

《中華人民共和國計算機信息系統安全保護條例》

第二十三條 故意輸入計算機病毒以及其他有害數據危害計算機信息系統安全的,或者未經許可出售計算機信息系統安全專用產品的,由公安機關處以警告或者對個人處以5000元以下的罰款、對單位處以1.5萬元以下的罰款;有違法所得的,除予以沒收外,可以處以違法所得1至3倍的罰款。

第二十四條 違反本條例的規定,構成違反治安管理行為的,依照《中華人民共和國治安管理處罰法》的有關規定處罰;構成犯罪的,依法追究刑事責任。

第二十五條 任何組織或者個人違反本條例的規定,給國家、集體或者他人財產造成損失的,應當依法承擔民事責任。


瀉藥。

關於卡OJ這種事我深有感觸,畢竟見過很多。

不管這些人是有意還是無意,我都覺得不太道德。首先是對OJ管理人的不便,其次是對其他人不好。卡OJ這種事就相當於在網吧扳電閘拔網線一樣。。。如果不是OIER都有很好的自制力也會發脾氣吧。


建議升級代碼到最新版本

開啟memcached shm_run

用nginx+php-fpm

願意通過http_judge方式分擔判題壓力


推薦閱讀:

計算機技術的前沿是什麼?未來的計算機會是什麼樣子?
坐標山東煙台高一學生 ,想要參加奧林匹克信息學競賽獲得自主招生加分,能出成績嗎?
surface使用有什麼奇技淫巧?
y=sin(kx)上均勻分布著110個點,如何求這些點的坐標?
31歲出國從頭學 Computer Science 還來得及嗎?

TAG:計算機 | OI | NOIP | ACM競賽 |