Recent Posts
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Now that I see the break-down, I agree with you that it’s a waste of time optimising the wikilinks for now. That’s an astonishing amount of time for maruku to take! I wonder how much of that is itex; I guess I can test that for myself by running maruku on a few files on my machine here, with and without itex. I could ask on the nForum about volunteers for writing a PEG grammar. That sounds like a good, specific task that someone might just be willing to do. Shall I ask? Do you have a clear idea of which bits of maruku’s syntax are missing, or would the task involve determining that? |
|
posted almost 2 years ago
distler
69 posts
edited almost 2 years ago |
On
Note that it does spend (what I consider to be) a significant amount of time querying the database, but it is totally dwarfed by the rendering time. (I don’t know why yours is spending an order of magnitude longer querying the database. Seems like something’s very wrong, there, even though the conclusion is the same.) The page, of course, contains a number of markup errors, like
which sent Maruku into convulsions. Surprisingly, correcting those errors did not appreciably affect the rendering time (the above-reported time is after making the relevant markup corrections). On my laptop, a typical time was
SQlite3 is faster than MySQL, but the machine itself is significantly slower than the iMac. Of those 49 seconds, spent rendering the page, 43 of them were spent in Maruku (for obscure reasons, Maruku has to be run twice, so really, we’re talking about 22 seconds to process the 175KB source). Maruku doesn’t particularly care about the number of WikiLinks, so that has nothing to do with why it takes so long render this particular page. Of the remaining 6 seconds, 4 seconds were spent in the Instiki Sanitizer. I don’t think there’s much to optimize there. The remaining 2 seconds were, largely, spent in the Chunk-Handler – the thing that processes Wikilinks (and, presumably, cares about how many of them there are). 2 seconds is still a long time, but it’s not surprising. Doing on the order of RegExp substitutions (5360 chunk-masking and 686 chunk-unmasking operations, to be precise) on a 175KB string, takes significant time. Using Regexps to process long strings sucks. I have looked at various optimizations of the Chunk-Handler code, but nothing I can do will contribute much to the speedup of rendering this page, which is dominated by Maruku. Now, if one of your nLab folks were to volunteer to write a PEG grammar for Maruku’s extended Markdown syntax, … Update:
Since I’m not gonna hold my breath for that to happen, I decided to spend some time (alas, more than I expected) making Maruku faster. The new rendering times for that page are
on
on my laptop. Roughly a factor of 2 improvement in the total rendering time, in both cases. Still not great, but it’s the best that I am going to achieve. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Heterotic Beast – Topic: Bugs Vanilla stores some information in the user database, including the last comment in each discussion that you read. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Heterotic Beast – Topic: Bugs Incidentally, if you want to get a feel for what Vanilla looks like but don’t want to sign on to the nForum, I have a test forum set up: http://www.math.ntnu.no/~stacey/Mathforge/Test/. I can easily add any plugins from the nForum that you might want to play with. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
The “print” view wasn’t much faster: 71303ms. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Okay, let’s take http://ncatlab.org/nlab/show/smooth%20infinity-groupoid%20--%20structures which, according to grep, has the order of 409 wikilinks. (Actually, it has 409 hits for the string Now I delete it from the cache, and try again. A cup-of-tea later, and I get the following: 74074ms (View 72773, DB: 1276). On the receiving end, I get 82s and 87s for the delivery times. Second time, similar figures. The time this gets a bit annoying is when editing a page, since then it has to regenerate it each time. That’s a fair wait if you’ve only changed a couple of spelling mistakes. |
|
posted almost 2 years ago
distler
69 posts
edited almost 2 years ago |
Forum: Heterotic Beast – Topic: Bugs
How does Vanilla keep track of what posts you’ve read? |
|
posted almost 2 years ago
distler
69 posts
|
Could you compare (by deleting the cached page and reloading ) how long it takes to build a wikilink-heavy page, versus a “normal” one? I’m particularly interested in the database-lookup times. As I said via email, the WikiReferences model uses a lot of raw SQL queries (which, therefore, do not benefit from ActiveRecord caching). But I am a little skeptical that is the cause of much of a slowdown. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Heterotic Beast – Topic: Bugs When I click on a discussion/whatever then it takes me to the top of the page. It would be more sensible if it took me to the point where I last read up to (which I presume it knows). |
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
Right, so on the crashing then I’m just watching the new system and waiting to see what it does and how it responds. I’ll keep a hold of all the logs for statistical purposes (not that I’ve any real idea about statistics …). One thing that I am pretty sure that slows down a page load is if the page has a lot of wikilinks on it. I don’t know how it checks all the links, but is there some way that that could be speeded up? Urs has some pages with loads and loads of links, and there’s talk of having some pages where everything possible is linked (with CSS to lessen the visual impact). |
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
Yes, I was thinking that 1Mb was a bit low. When the googlebot hit last night then it was creating a new log file every 20 minutes or so! |
|
posted almost 2 years ago
distler
69 posts
edited almost 2 years ago |
It keeps 25 files, of size 1MB each. Both of these numbers are configurable. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
It’s even possible that it didn’t crash this morning. It was very slow loading the main page so I restarted it. I couldn’t see from the logs anything special, though. I’m not inured to instiki crashing! I would love to get to the bottom of it, but it’s hard to know what to monitor, and how to monitor it (especially as it may have been my monitoring procedures that contributed to its crashing). As you say, let’s see how long it can last. By the way, how many log files does it keep? Does it just keep renumbering them each time it rotates them? If so, I’d better move them out of the log directory each day. |
|
posted almost 2 years ago
distler
69 posts
edited almost 2 years ago |
You seem to be inured to the idea of Instiki crashing. I am not. It shouldn’t crash, and there’s something wrong if it does. I’m not even convinced that my |
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
I’ve set that one that kills off processes after 20 requests (PassengerMaxRequests), and I’ve set it up to allow 10 concurrent processes (PassengerMaxPoolSize). I wouldn’t count this morning’s crash as anything special. More likely just teething problems. |
|
posted almost 2 years ago
admin
51 posts
edited almost 2 years ago |
Ouch. OK. Now I am puzzled. Is there a process-limit that gets exceeded on your VPS? (Seems unlikely: if there were too many active processes, you wouldn’t be able to login.) Could it be that Passenger is killing off a long-running response, because it thinks Instiki is “inactive”. If so, try setting The default (300) clearly won’t work for you if
|
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Heterotic Beast – Topic: Bugs Is the colour of the icon next to the forum title meant to tell me if there’s new stuff there? If so, it’s not always in sync. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
I was blocking them at the Apache level. That seemed to be what you were complaining about! Maybe I misunderstood. I can understand (I think that to get a better picture from the logs then I need to figure out a way to distinguish those that got cached from those that needed a serious operation. But as I’m back on “vanilla” instiki, my hacks to allow this have been taken out.) Incidentally, the nLab had crashed when I came in this morning, but it’s been running fairly stably all day. So that might just have been first night jitters (or the rampaging googlebot that came through at about midnight). |
|
posted almost 2 years ago
admin
51 posts
edited almost 2 years ago |
But it didn’t crash, or become otherwise unresponsive. Which is better than what you were doing before your “clean” install. Some actions, like I assume you know how to use But it appears that the nLab operates acceptably, even when you allow such actions.
|
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
Okay, so after a day’s trading at the nLab, here are the closing prices. This is with nothing disabled.
Total number of requests: 4223, breakdown of time taken to process (rounded down to nearest 10s):
So those |
|
posted almost 2 years ago
distler
69 posts
|
Forum: Instiki – Topic: Feature Requests As far as I can tell, updating the application files on a running Rails application (in production mode) has no effect, until the application is restarted. I, honestly, haven’t thought about the bundled Gems, but I expect the answer is the same. In any case, But I don’t think that’s your issue… |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Instiki – Topic: Feature Requests Okay. So simpler just to have separate copies of the code. I guess what I’m stumbling around with this is some way to make the update cycle a little simpler. At the moment, I update a live instiki installation from golem, and with the I can easily do that with the bzr stuff, but how would it work with the gems? Perhaps if the live versions weren’t bzr repositories but were more simply synced with the offline version in some fashion (thinking a bit like how
would that work, do you think? Or is this another case of me thinking something is important which really isn’t. |
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
I have a script that exports the day’s revisions to a set of bzr repositories (this is to make it easier for people to keep incremental backups of their webs). I haven’t reinstalled it as a cron job yet, and again I can run it manually. Root has its usual cron jobs (at least, it does now: in the installed image then it doesn’t run them but lets anacron do it, which is fine except that on a server, anacron isn’t running; however, cron just checks for the existence of anacron, not whether or not it is running). But that’s all. |
|
posted almost 2 years ago
distler
69 posts
edited almost 2 years ago |
Forum: Instiki – Topic: Feature Requests
Instiki cannot be installed as a Gem. There’s an old (~0.10.x) version, which worked as a Gem, and which is probably still floating around (on the internets, nothing ever really disappears). But that was long before my time, and I have not even thought about packaging the current version as a Gem. Of course, under Passenger, you can run multiple instances of a Rails application (including Instiki), under different subdirectories (or subdomains, if you have virtual hosts enabled). (At least with Instiki, that would require separate copies of the code, as each instance would have to point to its own database (in |
|
posted almost 2 years ago
distler
69 posts
edited almost 2 years ago |
Let’s keep it “off” for the time-being; I don’t have any plans to change anything for the next week, at least. Do you have any other scripts/cron-jobs running? |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Instiki – Topic: Feature Requests Is the following possible? I tried a couple of things, but don’t know enough to know if what I tried was all that there was. Given that instiki can be installed as a gem, can I install a system-wide version of the code and then run it as a user, with each user having their own separate instiki process, but sharing the code? |
|
posted almost 2 years ago
Andrew Stacey
117 posts
edited almost 2 years ago |
I’ve now upgraded the nLab server and reinstalled everything. In particular, I pulled a fresh copy of instiki from the repository and made only two changes:
In particular, I’m not mucking about with the logs just yet. We’ll see how this goes for now. Now, should I enable the daily check on the instiki source code, or shall I keep that off for the time being and update manually? |
|
posted almost 2 years ago
distler
69 posts
|
Forum: Instiki – Topic: Feature Requests
I am familiar with the usage (there’s not a UK/US distinction). I was making a lame attempt at humour, whilst making the serious point that these CSS classes are used for styling (generated content), and as structural hooks (for converting the |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Heterotic Beast – Topic: Bugs This place doesn’t seem to remember me at the moment. *sigh* |
|
posted almost 2 years ago
Andrew Stacey
117 posts
|
Forum: Instiki – Topic: Feature Requests Ah, another UK/US distinction. Something that is a “dummy” is not necessarily “dumb”. A “dummy” simply means a fake (although it’s not as pejorative), a “stand in”. Had I meant to be rude, I would have said “dumb CSS classes”. |