AWS issues
-
@Yamikuronue said in AWS issues:
We are definitely too big for this box
@apapadimoulis said in AWS issues:
at this price, we could get a dedicated quad core server
@ben_lubar said in AWS issues:
site was stuck in a busy loop
@ben_lubar said in AWS issues:
1000 hourly unique visitors
@ben_lubar said in AWS issues:
1000 hourly unique visitors
but why do you guys insist on webscale forums, if they give you so much trouble
how far will you go in forum , when will 'or you'll have CS' not worry people anymore
-
@ben_lubar Looks like the average burn rate has drifted up from about 20–21 to around 24–25. Since that takes us from net-accumulation to net-spending, that's significant. It's also not apparently a simple thing, since it's been just creeping up.
Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task? What's the breakdown in usage between the nodebb front end and the DB parts? Are we looking at the right thing at all?
-
@Yamikuronue said in AWS issues:
Big ass
-
@dkf said in AWS issues:
Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?
One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.
-
@Dreikin said in AWS issues:
@ben_lubar said in AWS issues:
You forgot one of the most important:
Australian speeds would be higher.
The only place @flabdablet beats Murica, explains his avatar
-
@masonwheeler said in AWS issues:
@dkf said in AWS issues:
Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?
One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.
The up-vote (and probably down- too) don't respond, either. Or they do, but it's after a (very) long delay.
-
@djls45 said in AWS issues:
The up-vote (and probably down- too) don't respond, either. Or they do, but it's after a (very) long delay.
Sure, but that has to be recorded by the server. Opening an editor window doesn't.
-
@masonwheeler said in AWS issues:
@dkf said in AWS issues:
Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?
One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.
Yeah. I think the reason is that it's calling the server for real post ID or something.
-
@Tsaukpaetra said in AWS issues:
@masonwheeler said in AWS issues:
@dkf said in AWS issues:
Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task?
One thing I noticed is that, while the server is cootie-bound, pressing the "reply" or "quote" buttons do nothing. Pulling up an editor window ought to be a 100% client-side operation, but it doesn't work while the server is unavailable. Something is very wrong there.
Yeah. I think the reason is that it's calling the server for real post ID or something.
Well, for quote, I believe it's asking for the raw of the original post (since it needs that to be able to add the quote)
-
@sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow...
-
@masonwheeler said in AWS issues:
@sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow...
So now you want Community Server's multiple-copies-of-each-piece-of-irrelevant-data format?
-
@ben_lubar said in AWS issues:
multiple-copies-of-each-piece-of-irrelevant-data format
Multiple copies? Irrelevant?
-
@Yamikuronue said in AWS issues:
@ben_lubar said in AWS issues:
multiple-copies-of-each-piece-of-irrelevant-data format
Multiple copies? Irrelevant?
The post form included two copies of every tag ever posted on the forum in an
<input type="hidden">
field, so it was sent back to the server just in case the server needed to know every tag in its database.
-
@ben_lubar Yeah, but we're talking about the raw vs the cooked, which are different things, and both relevant. so....
-
@Yamikuronue Community Server solved that problem in two ways:
- the composer was on a completely separate page from the topic
- posts were allowed to contain unsanitized raw HTML
Wait, did I say solved? I meant "made worse".
-
@Yamikuronue said in AWS issues:
@ben_lubar Yeah, but we're talking about the raw vs the cooked, which are different things, and both relevant. so....
They're only both relevant if every user is going to quote every post in every topic every time.
Otherwise, only getting the raw when needed for quote makes sense.
-
@CreatedToDislikeThis said in AWS issues:
only getting the raw when needed for quote makes sense.
It might make sense to reduce the number of server round trips if that's why the CPU usage is so high. Of course, you never, ever want to optimize before you measure where the bottlenecks are, so I can't say for sure.
If I was doing it, I'd probably only ship the raw and let the client-side script bake it. The forum doesn't work without javascript anyway.
-
@dkf said in AWS issues:
@ben_lubar Looks like the average burn rate has drifted up from about 20–21 to around 24–25. Since that takes us from net-accumulation to net-spending, that's significant. It's also not apparently a simple thing, since it's been just creeping up.
Why on earth are we using that much CPU anyway for what ought to be mainly an IO-bound task? What's the breakdown in usage between the nodebb front end and the DB parts? Are we looking at the right thing at all?
@dkf
Webscale i presume. When i looked at the DB every lookup was key based. It's not a rdbms, so effiency is shit. Every key looks like a guid. Generating the guids probably explains a fair bit of the load.
I looked at it and decided that adapting it to a rdbms would require almost a rewrite. @Weng looked at it too and he gave up too (NO! You were the chosen one)
-
Just for shits and giggles, I hit Reply; to the thread -- not to a post, nothing highlighted.
socket.emit "plugins.composer.getFormattingOptions": function composer.load/<() socket.emit "plugins.composer.getFormattingOptions" response: null [{"name":"bold","className":"fa fa-bold","title":"[[modules:composer.formatting.bold]]"},{"name":"italic","className":"fa fa-italic","title":"[[modules:composer.formatting.italic]]"},{"name":"list","className":"fa fa-list","title":"[[modules:composer.formatting.list]]"},{"name":"strikethrough","className":"fa fa-strikethrough","title":"[[modules:composer.formatting.strikethrough]]"},{"name":"link","className":"fa fa-link","title":"[[modules:composer.formatting.link]]"},{"name":"picture-o","className":"fa fa-picture-o","title":"[[modules:composer.formatting.picture]]"},{"name":"tags","className":"fa fa-tags","mobile":true},{"name":"zen","className":"fa fa-arrows-alt","title":"[[modules:composer.zen_mode]]","mobile":false},{"name":"del-ins","className":"fa fa-eraser","title":"[[tdwtfButtons:del-ins]]"},{"name":"abbr","className":"fa fa-info-circle","title":"[[tdwtfButtons:abbr]]"},{"name":"emoji-extended","className":"fa fa-smile-o","title":"[[emojiExtended:composer.title]]"}] socket.emit "plugins.mentions.listGroups": function i/<() socket.emit "plugins.composer.renderHelp": function handleHelp/<() socket.emit "plugins.mentions.listGroups" response: null ["Impossible Mission - B","Impossible Mission - A","area_can","area_pol","Self-Serve Mafia - Club Ded","Self-Serve Mafia - Players","Self-Serve Mafia","Gaska","Discourse touched me in a no-no place","BotOwners","sockdevs","TDWTF NodeBB Development","secret PM club","Mafia - Players","Mafia - Club Ded","Global Moderators","administrators","authors","mods","area_bel","bots","programmers_testers","area_deu","area_gbr","area_usa","trust_level_4","trust_level_3"] socket.emit "plugins.composer.renderHelp" response: null "<h2>Markdown</h2>\n<p>This forum is powered by Markdown. For full documentation, <a href=\"http://commonmark.org/help/\" rel=\"nofollow\">click here</a></p>\n<h2>Safe HTML</h2><p>You are allowed to use a subset of HTML.</p><p>The following attributes are allowed on all elements: <code>title</code></p><p>The following elements are allowed: <code><a href rel></code>, <code><abbr></code>, <code><address></code>, <code><audio controls src></code>, <code><b></code>, <code><big></code>, <code><blockquote></code>, <code><br></code>, <code><caption></code>, <code><cite></code>, <code><code class></code>, <code><dd></code>, <code><del></code>, <code><details open></code>, <code><div></code>, <code><dl></code>, <code><dt></code>, <code><em></code>, <code><h1></code>, <code><h2></code>, <code><h3></code>, <code><h4></code>, <code><h5></code>, <code><h6></code>, <code><hr></code>, <code><i></code>, <code><img alt class height src width></code>, <code><ins></code>, <code><kbd></code>, <code><li value></code>, <code><ol start></code>, <code><p></code>, <code><pre class></code>, <code><q></code>, <code><s></code>, <code><small></code>, <code><span></code>, <code><strike></code>, <code><strong></code>, <code><sub></code>, <code><summary></code>, <code><sup></code>, <code><table class></code>, <code><tbody></code>, <code><td></code>, <code><tfoot></code>, <code><th></code>, <code><thead></code>, <code><tr></code>, <code><tt></code>, <code><u></code>, <code><ul start></code>, <code><video controls poster src></code></p>" socket.emit "plugins.composer.renderPreview" "": function preview.render/timeoutId</<() socket.emit "plugins.composer.renderPreview" "" response: null ""
-
topic.json:
{"topic":"Topic","topic_id":"Topic ID","topic_id_placeholder":"Enter topic ID","no_topics_found":"No topics found!","no_posts_found":"No posts found!","post_is_deleted":"This post is deleted!","topic_is_deleted":"This topic is deleted!","profile":"Profile","posted_by":"Posted by %1","posted_by_guest":"Posted by Guest","chat":"Chat","notify_me":"Be notified of new replies in this topic","quote":"Quote","reply":"Reply","reply-as-topic":"Reply as topic","guest-login-reply":"Log in to reply","edit":"Edit","delete":"Delete","purge":"Purge","restore":"Restore","move":"Move","fork":"Fork","link":"Link","share":"Share","tools":"Tools","flag":"Flag","locked":"Locked","pinned":"Pinned","moved":"Moved","bookmark_instructions":"Click here to return to the last read post in this thread.","flag_title":"Flag this post for moderation","flag_success":"This post has been flagged for moderation.","flag_manage_title":"Flagged post in %1","flag_manage_history":"Action History","flag_manage_no_history":"No event history to report","flag_manage_assignee":"Assignee","flag_manage_state":"State","flag_manage_state_open":"New/Open","flag_manage_state_wip":"Work in Progress","flag_manage_state_resolved":"Resolved","flag_manage_state_rejected":"Rejected","flag_manage_notes":"Shared Notes","flag_manage_update":"Update Flag Status","flag_manage_history_assignee":"Assigned to %1","flag_manage_history_state":"Updated state to %1","flag_manage_history_notes":"Updated flag notes","flag_manage_saved":"Flag Details Updated","deleted_message":"This topic has been deleted. Only users with topic management privileges can see it.","following_topic.message":"You will now be receiving notifications when somebody posts to this topic.","not_following_topic.message":"You will see this topic in the unread topics list, but you will not receive notifications when somebody posts to this topic.","ignoring_topic.message":"You will no longer see this topic in the unread topics list. You will be notified when you are mentioned or your post is up voted.","login_to_subscribe":"Please register or log in in order to subscribe to this topic.","markAsUnreadForAll.success":"Topic marked as unread for all.","mark_unread":"Mark unread","mark_unread.success":"Topic marked as unread.","watch":"Watch","unwatch":"Unwatch","watch.title":"Be notified of new replies in this topic","unwatch.title":"Stop watching this topic","share_this_post":"Share this Post","watching":"Watching","not-watching":"Not Watching","ignoring":"Ignoring","watching.description":"Notify me of new replies.<br/>Show topic in unread.","not-watching.description":"Do not notify me of new replies.<br/>Show topic in unread if category is not ignored.","ignoring.description":"Do not notify me of new replies.<br/>Do not show topic in unread.","thread_tools.title":"Topic Tools","thread_tools.markAsUnreadForAll":"Mark unread for all","thread_tools.pin":"Pin Topic","thread_tools.unpin":"Unpin Topic","thread_tools.lock":"Lock Topic","thread_tools.unlock":"Unlock Topic","thread_tools.move":"Move Topic","thread_tools.move_all":"Move All","thread_tools.fork":"Fork Topic","thread_tools.delete":"Delete Topic","thread_tools.delete-posts":"Delete Posts","thread_tools.delete_confirm":"Are you sure you want to delete this topic?","thread_tools.restore":"Restore Topic","thread_tools.restore_confirm":"Are you sure you want to restore this topic?","thread_tools.purge":"Purge Topic","thread_tools.purge_confirm":"Are you sure you want to purge this topic?","topic_move_success":"This topic has been successfully moved to %1","post_delete_confirm":"Are you sure you want to delete this post?","post_restore_confirm":"Are you sure you want to restore this post?","post_purge_confirm":"Are you sure you want to purge this post?","load_categories":"Loading Categories","disabled_categories_note":"Disabled Categories are greyed out","confirm_move":"Move","confirm_fork":"Fork","bookmark":"Bookmark","bookmarks":"Bookmarks","bookmarks.has_no_bookmarks":"You haven't bookmarked any posts yet.","loading_more_posts":"Loading More Posts","move_topic":"Move Topic","move_topics":"Move Topics","move_post":"Move Post","post_moved":"Post moved!","fork_topic":"Fork Topic","topic_will_be_moved_to":"This topic will be moved to the category","fork_topic_instruction":"Click the posts you want to fork","fork_no_pids":"No posts selected!","fork_pid_count":"%1 post(s) selected","fork_success":"Successfully forked topic! Click here to go to the forked topic.","delete_posts_instruction":"Click the posts you want to delete/purge","composer.title_placeholder":"Enter your topic title here...","composer.handle_placeholder":"Name","composer.discard":"Discard","composer.submit":"Submit","composer.replying_to":"Replying to %1","composer.new_topic":"New Topic","composer.uploading":"uploading...","composer.thumb_url_label":"Paste a topic thumbnail URL","composer.thumb_title":"Add a thumbnail to this topic","composer.thumb_url_placeholder":"http://example.com/thumb.png","composer.thumb_file_label":"Or upload a file","composer.thumb_remove":"Clear fields","composer.drag_and_drop_images":"Drag and Drop Images Here","more_users_and_guests":"%1 more user(s) and %2 guest(s)","more_users":"%1 more user(s)","more_guests":"%1 more guest(s)","users_and_others":"%1 and %2 others","sort_by":"Sort by","oldest_to_newest":"Oldest to Newest","newest_to_oldest":"Newest to Oldest","most_votes":"Most votes","most_posts":"Most posts","stale.title":"Create new topic instead?","stale.warning":"The topic you are replying to is quite old. Would you like to create a new topic instead, and reference this one in your reply?","stale.create":"Create a new topic","stale.reply_anyway":"Reply to this topic anyway","link_back":"Re: [%1](%2)","spam":"Spam","offensive":"Offensive","custom-flag-reason":"Enter a flagging reason"}
modules.json:
{"chat.chatting_with":"Chat with <span id=\"chat-with-name\"></span>","chat.placeholder":"Type chat message here, press enter to send","chat.send":"Send","chat.no_active":"You have no active chats.","chat.user_typing":"%1 is typing ...","chat.user_has_messaged_you":"%1 has messaged you.","chat.see_all":"See all chats","chat.mark_all_read":"Mark all chats read","chat.no-messages":"Please select a recipient to view chat message history","chat.no-users-in-room":"No users in this room","chat.recent-chats":"Recent Chats","chat.contacts":"Contacts","chat.message-history":"Message History","chat.pop-out":"Pop out chat","chat.maximize":"Maximize","chat.seven_days":"7 Days","chat.thirty_days":"30 Days","chat.three_months":"3 Months","chat.delete_message_confirm":"Are you sure you wish to delete this message?","chat.add-users-to-room":"Add users to room","composer.compose":"Compose","composer.show_preview":"Show Preview","composer.hide_preview":"Hide Preview","composer.user_said_in":"%1 said in %2:","composer.user_said":"%1 said:","composer.discard":"Are you sure you wish to discard this post?","composer.submit_and_lock":"Submit and Lock","composer.toggle_dropdown":"Toggle Dropdown","composer.uploading":"Uploading %1","composer.formatting.bold":"Bold","composer.formatting.italic":"Italic","composer.formatting.list":"List","composer.formatting.strikethrough":"Strikethrough","composer.formatting.link":"Link","composer.formatting.picture":"Picture","composer.upload-picture":"Upload Image","composer.upload-file":"Upload File","composer.zen_mode":"Zen Mode","composer.select_category":"Select a category","bootbox.ok":"OK","bootbox.cancel":"Cancel","bootbox.confirm":"Confirm","cover.dragging_title":"Cover Photo Positioning","cover.dragging_message":"Drag the cover photo to the desired position and click \"Save\"","cover.saved":"Cover photo image and position saved"}
Shouldn't those two have already been loaded? Most of the others I can see as a load-on-demand thing...
....except they've all already been loaded:
-
OTOH, after the composer has been (re-)loaded once it doesn't get loaded again.
-
@Dreikin said in AWS issues:
OTOH, after the composer has been (re-)loaded once it doesn't get loaded again.
So, moral of the story: Load twice, cache sometimes?
-
@anotherusername said in AWS issues:
socket.emit "plugins.composer.renderPreview" "": function preview.render/timeoutId</<() socket.emit "plugins.composer.renderPreview" "" response: null ""
Oh shit, I just realized what it's doing there...
-
@anotherusername said in AWS issues:
@anotherusername said in AWS issues:
socket.emit "plugins.composer.renderPreview" "": function preview.render/timeoutId</<() socket.emit "plugins.composer.renderPreview" "" response: null ""
Oh shit, I just realized what it's doing there...
If my guess of requesting a render cycle for and empty string is correct, do I get a ?
-
@masonwheeler said in AWS issues:
@sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow...
I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.
-
@sloosecannon said in AWS issues:
@masonwheeler said in AWS issues:
@sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow...
I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.
I think the raw is already there. I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools.
-
@Dreikin said in AWS issues:
@sloosecannon said in AWS issues:
@masonwheeler said in AWS issues:
@sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow...
I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.
I think the raw is already there. I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools.
Uhhhhhh. Right. Uh. OK then.
That's pretty silly then.
-
-
@Yamikuronue said in AWS issues:
The forum doesn't work without javascript anyway.
You can read it without JavaScript.
-
@ben_lubar said in AWS issues:
@Dreikin said in AWS issues:
no new requests were made
Your websocket was already open.
Yeah, I just noticed that. Interesting. It's very ...active while typing.
-
@ben_lubar said in AWS issues:
@Dreikin said in AWS issues:
no new requests were made
Your websocket was already open.
And proof it is requesting raw, contrary to my oblivious statement earlier, gracefully corrected by @ben_lubar:
Edit:
And a small sample of how chatty it is while composing:
-
@Dreikin said in AWS issues:
@ben_lubar said in AWS issues:
@Dreikin said in AWS issues:
no new requests were made
Your websocket was already open.
And proof it is requesting raw, contrary to my oblivious statement earlier, gracefully corrected by @ben_lubar:
Edit:
And a small sample of how chatty it is while composing:
Yeah, I wasn't kidding up thread.
-
@Yamikuronue said in AWS issues:
We are definitely too big for this box
-
@ben_lubar said in AWS issues:
You can read it without JavaScript.
I don't believe anything without testing it. So since I happened to have a copy of Firefox
22sitting around, I shut off javascript and gave it a try.First it crashed Firefox, but that was probably unrelated. The front page has a huge warning sign:
It said log in to post, so I tried to log in:
When I hit login, a new tab opened:
So no, I'd say they don't work without javascript. The pages render but you can't interact with the system in any meaningful way.
By the way, clicking upvote takes me to the top of the page for some reason. Tufty's avatar still spins though, so that's a plus.
-
@Yamikuronue said in AWS issues:
Tufty's avatar still spins though, so that's a plus.
fa-spin
-licious!
-
@Yamikuronue said in AWS issues:
Pet hate: They meant e.g. not i.e.
Except it would still be a pretty clunky sentence, and is pretty unnecessary because people with JS disabled either know what they're doing and how to turn it off, or don't know what NoScript means
-
@dkf said in AWS issues:
@ben_lubar Looks like the average burn rate has drifted up from about 20–21 to around 24–25. Since that takes us from net-accumulation to net-spending, that's significant. It's also not apparently a simple thing, since it's been just creeping up.
true, true, but now that we're on dedicated hardware (that is cheaper than what we were paying) we now have an effectively infinite earn rate, so until we manage to constanlty pin our processor's balls to the wall we'll be just fine tere.
still might want to keep an eye on trends there.
-
@accalia said in AWS issues:
true, true, but now that we're on dedicated hardware (that is cheaper than what we were paying) we now have an effectively infinite earn rate, so until we manage to constanlty pin our processor's balls to the wall we'll be just fine tere.
Well, it means that we won't get any horrible surprises on the CPU usage front.
Next up: worrying about bandwidth, latency and availability.
still might want to keep an eye on trends there.
Yes. It's usually a good idea to set tripwires out relatively far so that you're not hitting problems too hard while trying to diagnose. And FFS make sure that nodeBB doesn't fall over when some random jerk on the internet sends you a
PROPFIND
…
-
@Tsaukpaetra said in AWS issues:
@anotherusername said in AWS issues:
@anotherusername said in AWS issues:
socket.emit "plugins.composer.renderPreview" "": function preview.render/timeoutId</<() socket.emit "plugins.composer.renderPreview" "" response: null ""
Oh shit, I just realized what it's doing there...
If my guess of requesting a render cycle for and empty string is correct, do I get a ?
Yes.
@Dreikin said in AWS issues:
I think the raw is already there. I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools.
They don't show socket.io transfers. It is most certainly happening, though:
socket.emit "posts.getRawPost" "1022712": function () socket.emit "posts.getRawPost" "1022712" response: null "@sloosecannon said in [AWS issues](/post/1022711):\n> @masonwheeler said in [AWS issues](/post/1022646):\n> > @sloosecannon Because obviously there's no possible way for that information to be available already, included in the page somehow... :trolleybus:\n> \n> I mean, it will ~double the amount of data tracked per post, and ~double the amount of data transferred. It's an option you can choose, but... I'm not sure it's the best one.\n\nI think the raw is already there. I just checked quoting on this thread and one I've not participated in, and no new requests were made, according to the Network tab of Chrome's Developer Tools."
If you're interested, I wrote this handy dandy Socket.io monitor that runs in the console:
var ioMonitor = (() => { var real_emit = socket.emit, removed = 0; const log = (...a) => !removed && console.log(...a); const m = e => e === null ? e : typeof e == "function" ? e : JSON.stringify(e); socket.emit = function emit(...s) { // These request types won't be logged -- you can add more if you like // The items can also be RegExp instead of string, e.g. /^p[io]ng$/ var ignoredTypes = ['ping', 'pong']; var ignore = ignoredTypes.some(t => t.test ? t.test(s[0]) : t == s[0]); var f = typeof s[s.length - 1] == "function" && s.pop() || undefined; if (!ignore) log("socket.emit", ...s.slice(0, -1).map(m).concat(m(s.slice(-1)[0]) + ":\n"), f); real_emit.bind(socket)(...[...s, function (...e) { if (!ignore && e.some(p => p !== null)) log("socket.emit", ...s.map(m), "response:\n", ...e.map(m)); if (f) return f(...e); }]); }; return {remove: () => { if (!removed) { ++ removed; socket.emit = real_emit }}}; })();
It'll trap and log (unless the event type matches something in the list of ignored types) every
socket.emit
call, and the response, giving the parameters that were sent and the parameters that were returned, in JSON notation. It then calls the original callback to make sure everything still works properly.Note that it won't log events received from the server; it logs events that the client initiates with
socket.emit
.To stop logging and put everything back to normal, just enter:
ioMonitor.remove();
-
@anotherusername said in AWS issues:
I wrote this handy dandy Socket.io monitor that runs in the console:
Stuff
-
@Yamikuronue mine will start/stop logging (in Firefox) without needing a page refresh. It also logs the callback function, which you could right-click -> store as global variable ->
toSource()
if you wanted to see what it was.I mean, Socket.io already has built-in logging, which you can enable by setting a flag in
localStorage
, but that also required a refresh to start/stop logging.So I like my script. :P
-
@anotherusername I got a notification for this post
-
@sloosecannon no way. Really?
@mods !!!!!!!!11
-
Also I dunno what you think I can do about that, you want @administrators
-
@Yamikuronue too much letters, "mods" is only 4. :P
-
@anotherusername Didn't Discourse do something similar? Or am I confusing things?
-
@anotherusername said in AWS issues:
```text
So that's how you opt out of syntax highlighting? I'd port that back to error-bot if I was still maintaining that project...
-
@aliceif was famously inconsistent; I'm sure it probably did that at one time or another in the old bug/new bug cycle.
-
@Yamikuronue said in AWS issues:
Also I dunno what you think I can do about that, you want @administrators
So in other words...
@ben_lubar !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
@Yamikuronue said in AWS issues:
@anotherusername said in AWS issues:
I wrote this handy dandy Socket.io monitor that runs in the console:
Stuff