์ด ์ด๊ธฐ ์๊ฒฌ์ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ ์ฝ๊ฐ์ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ์ด์ง๋ง ๋ฐ์ํ ์ ์์ต๋๋ค. ๋งค์ฐ ํ๋์ ์ธ ํจ๋์์๋ง ๋ฐ์ํฉ๋๋ค(์ด๋น 10๋ฒ์ ํธ์ง์ ์๊ฐํ์ญ์์ค).
loadTesting
ํ์ฑํํจ๋๊ฐ ๋ก๋๋์ง ์์
ํจ๋๊ฐ ๋ก๋๋์ด์ผ ํฉ๋๋ค.
ํจ๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ๋ก๋๋๊ณ ๋ก๋ ํ
์คํธ๊ฐ ์๋ฃ๋๋ฉด ํธ์งํ ์ ์์ต๋๋ค.
์ด๋ฏธ ํจ๋์ ์์ผ๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ณ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค.
Error: Failed assertion: mismatched apply: 10984 / 11740
๋ด ๊ฐ์ ์ baseRev #๋ฅผ ํฌํจํ์ฌ pad
๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ ์๊ฐ ์ฌ์ด์ ๋ค์ ๋ณ๊ฒฝ์ด ์คํจํ์ฌ ์ผ์นํ์ง ์๋ ์ ์ฉ์ ์ ๋ฐํ๋ค๋ ์๋ฏธ์ ์ถ๊ฐ ๋ณ๊ฒฝ์ด ์๋ค๋ ๊ฒ์
๋๋ค.
์ด ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํ์ญ์์ค..
Rev # |
1 | <-- we connect here
2 | <-- has been an edit here.
3 | <-- is the first commit we receive from the server
๋ ผ๋ฆฌ๋ ์ด๋ ์ต๋๋ค.
exports.applyToText = function (cs, str) {
var unpacked = exports.unpack(cs);
exports.assert(str.length == unpacked.oldLen, "mismatched apply: ", str.length, " / ", unpacked.oldLen);
ํด๊ฒฐ์ฑ
์ Etherpad๊ฐ "๋ฏธ๋"์ธ ๊ฐ์ ์ ๋ฐ์ผ๋ฉด ์ด์ ๊ฐ์ ์ "์์ฒญ"ํ๊ณ ์ต์ ๊ฐ์ ์ด์ ์ ์ ์ฉํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์ 3
ํ๊ณ ์๊ณ ๊ทธ๊ฒ์์์์ 1
๊ทธ๊ฒ์ ๋ํ ์์ฒญ [2]
ํ๊ณ ์ ์ฉ [2]
์ ์ 3
?
etherpad-load-test
๋ฅผ ์ฌ์ฉํ์ฌ etherpad-cli-client
์์ ์ด์ ๋์ผํ ๋ฌธ์ ๋ฅผ ๋ง๋ค๋ ค๊ณ ์๋ํ์ง๋ง ํ ์ ์์ต๋๋ค. ๋ฉ์์ง๋ ํญ์ ์์๋๋ก ๋ก๋๋๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ๋ค์ ๋จ๊ณ๋ CLIENT_VARS
์ NEW_CHANGES
์ฌ์ด์ ์ง์ฐ์ ์๋ฎฌ๋ ์ด์
ํ๊ณ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง ํ์ธํ๋ ๊ฒ์
๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ CLI ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ ์น ํด๋ผ์ด์ธํธ ๋ฌธ์ ์ฌ์ผ ํฉ๋๋ค.
collab_client.js
283ํ
if (msg.type == "NEW_CHANGES")
์ฌ๊ธฐ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
์์ ํ์๊ฐ ์ ์ฒ๋ฆฌ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋
์กด, ๋ง์!
ํ
์คํธ ์๋ฒ์์ loadTest๋ฅผ ์คํํ์ต๋๋ค. node app.js http://127.0.0.1 :9001/p/load -d 180 -l 100 -a 500
๋ํ ์์ฐ์ : node app.js http://127.0.0.1 :9001/p/load -l 50 -a 12
๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
์ฌ์ฉ์๋ ์ด๋ฏธ ํจ๋์ ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ์ธํ์ต๋๋ค. ๋ฌธ์ ๋ ์ฌ์ฉ์ 10๋ช ์์ 15๋ช ์ฌ์ด์์ ๋ฐ์ํฉ๋๋ค.
180/500์ ๋นํ์ค์ ์ธ ์ซ์์ํธ! ์ด๋น 1๊ฐ์ ํธ์ง ์์ ์ ์ํํ๋ 500๋ช ์ ์๊ฐ๋ ์ธํฐ๋ท์ ๊นจ๋จ๋ฆด ๊ฒ์ ๋๋ค ๐๏ธ
์๋ ํ์ธ์ @JohnMcLear ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ Etherpad ์ค์น๊ฐ ๊ทธ๊ฒ์ ๊ฒฌ๋ ๋ค๋ ๊ฒ์ ํ์ ํ ์ ์์ต๋๋ค! ์ธ์์ ์ด๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ํ ์ฐ๋ฆฌ ์ธ์คํด์ค๊ฐ ์ ํํ ์ถฉ๋ํ๋ ๊ฒ์ด ๋ฌด์์ด๋ (๋ซํ ๋ฌธ์ https://github.com/ether/etherpad-lite/issues/4090 ์ฐธ์กฐ) ์๋ง๋ ์ค์ ๋ก ํจ๋์ ํ๋์ ์์กดํ์ง ์์ ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค.
@yorickreum์ ์ธ๊ธํ์ต๋๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ผ์นํ์ง ์๋ ์ ์ฉ์ ๋ณธ์ง์ ์ผ๋ก ๋ด๊ฐ ํด๊ฒฐํด์ผ ํ๋ ๊ฒฝํฉ ์ํ์ด๋ฉฐ ์ด ๋ฌธ์ ๋ฒ๊ทธ ์์ ์ ์์ธ์ ๊ด๊ณ์์ด ๋ฐ์ํ๋ ๊ฒฝํฉ ์ํ์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.
ํฅ๋ฏธ๋ก์ด. mismatched apply
๋ ๋ณ๊ฒฝ ์งํฉ์ ๋ฌธ์์ด์ ์ ์ฉํ๋ ๋ฐ๋ง ์ ์ฉํ ์ ์์ผ๋ฉฐ loadTest ๋๊ตฌ๊ฐ ์ํํ๋ ์ ์ผํ ์์
์ธ ํจ๋ ์ฝํ
์ธ ์ "์ถ๊ฐ"๊ฐ ์๋๋๋ค.
loadTest ๋๊ตฌ๊ฐ ๋ฌธ์์ด์ ๋ณ๊ฒฝ ์งํฉ ์ ์ฉ์ ์๋ฎฌ๋ ์ด์ ํ๋๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค.
์ํฉ์ด ์ค๋๋ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ ์ด๊ฒ์ ๋ํ ์ ๋ฐ์ดํธ์ ๋๋ค.
๋ฌธ์ ์์ฑ ๊ด๋ฆฌ์ ์์ด changeset.js๋ง ์ฌ์ฉํ์ฌ ์ ํ ํญ๋ชฉ์ ์์ฑ์ ์ ์ฉํ๋ ๋ ผ๋ฆฌ๊ฐ ๊ธฐ์ต๋์ง ์์ ๋์์ ์์ฒญํ์ต๋๋ค.
์ต๊ทผ์ ์น์ํ ์ฌ๋์ด ๋์์ ์ค ์ ์๋ ๊ฒ์ ๋๋ค. ํด๋น ๋ก์ง์ ๊ฐ๊ฒ ๋๋ฉด ๋ถํ ํ ์คํธ์ ํฌํจ์ํค๊ณ ๋ฒ๊ทธ๋ฅผ ์๋ฎฌ๋ ์ดํธํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด์ ๋ํ ์ถ๊ฐ ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฉด ์๊ฐ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฐ๋จํ ์ ๋ฐ์ดํธ/๋ณด๊ณ :
์ด์ ์ฌ์ฉ์๊ฐ 2๋ช ๋ฟ์ธ ํจ๋์์ ๋ฌธ์ ๊ฐ ๋ค์ ๋ฐ์ํ์ฌ @yorickreum์ด ์ด๋ฏธ ์์ฑํ ๊ฒ์ฒ๋ผ ์ฌ์ฉ์ ์์ ์์กดํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค(https://github.com/ether/etherpad-lite/issues ์ฐธ์กฐ). /4090). ๋ฌธ์ ๋ 2๋ถ ํ์ ๋ฐ์ํ๊ณ 1๋ถ ๋์ ์ง์๋์ด ํญ์ ๋ซ๊ณ ์ ํญ์์ ํจ๋๋ฅผ ๋ค์ ์ด์๊ณ ๊ฒฐ๊ตญ ๋ค์ 1์๊ฐ ๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค. Firefox 78.0.2๋ฅผ ์ฌ์ฉํฉ๋๋ค.
@Oremountainflorian ๊ณ์๋๋์ง ํ์ธํ๊ธฐ ์ํด ํ๋ฌ๊ทธ์ธ ์์ด ํ ์คํธ๋ฅผ ์ ์ํ๊ณ ์ถ์ต๋๋ค.
์ค๋ฅ๊ฐ ์ง์๋ ํ 1๋ถ ์ด๋ด์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์๋ก ๊ณ ์น๋ ค๊ณ ํ์ต๋๊น? ๋ณ๊ฒฝ ์งํฉ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋์ง ์์ผ๋ฏ๋ก ๋ฎ์ ํ๋์ ์๋ก ๊ณ ์นจํด๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ต๋๋ค. ๋๋ ์ด๋ค ํ๋ฌ๊ทธ์ธ ๋งํ ์ผ์ด ์ผ์ด๋ ์ ์๋ค๊ณ ๋๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@yorickreum์ ์ธ๊ธํ์ต๋๋ค. ํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ผ์นํ์ง ์๋ ์ ์ฉ์ ๋ณธ์ง์ ์ผ๋ก ๋ด๊ฐ ํด๊ฒฐํด์ผ ํ๋ ๊ฒฝํฉ ์ํ์ด๋ฉฐ ์ด ๋ฌธ์ ๋ฒ๊ทธ ์์ ์ ์์ธ์ ๊ด๊ณ์์ด ๋ฐ์ํ๋ ๊ฒฝํฉ ์ํ์ ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.