Project

General

Profile

Actions

tickets #62255

closed

http://download.opensuse.org/distribution/leap/15.2/repo/oss/x86_64/ takes far too long to load in a web browser

Added by mrmazda about 4 years ago. Updated over 1 year ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
Mirrors
Target version:
-
Start date:
2020-01-18
Due date:
% Done:

100%

Estimated time:

Description

Mailing list thread OP:
https://lists.opensuse.org/heroes/2020-01/msg00023.html

https://mirrors.edge.kernel.org/opensuse/distribution/leap/15.2/repo/oss/x86_64/ retrieved with wget was 2,660,970 bytes.

http://ftp5.gwdg.de/pub/opensuse/distribution/leap/15.2/repo/oss/x86_64/ retrieved with wget was 2,890,366 bytes.

http://download.opensuse.org/distribution/leap/15.2/repo/oss/x86_64/ (195.135.221.134) retrieved with wget was 47,366,785 bytes.

That makes DOO an average of 17 times as big as the mirrors for the same content.

What's worse, while the mirrors serve plain link lists, which load very quickly, DOO OTOH is primarily an HTML table, and HTML tables are handled by web browsers with gross inefficiency, particularly when they contain presentational markup, such as DOO uses on most of its over 100kb of lines:

td align="right"
td valign="top"
img src="Index%20of%20_distribution_leap_15.2_repo_oss_x86_64-sm_files/rpm.png" alt="[ ]" width="16" height="16"

SeaMonkey 2.49.5 and latest Chromium take well in excess of 10 minutes to load the 47MB page, gobbling substantial CPU, possibly exhausting available RAM, while the mirrors load too quickly to bother trying to measure.

Actions #1

Updated by lrupp about 4 years ago

  • Category set to Mirrors
Actions #2

Updated by pjessen about 4 years ago

  • Private changed from Yes to No

As Felix writes, our listing is unnecessarily long, I think it would be sensible to reduce it. I also thought this might be low hanging fruit, easy to update some template pages, but the mirrorbrain autoindex module seems to be a bit more involved.

Actions #3

Updated by pjessen about 4 years ago

a) the listing for leap/15.1/repo/oss/x86_64/ is around 8Mb.
b) the listing for leap/15.2/repo/oss/x86_64/ is much longer (47Mb) because we have extra versions of each package.

(b) is clearly the real problem, but the situation could be improved a lot by just compressing the output. The 15.1 listing could be reduced to ~500K, the 15.2 listing to ~2Mb.

Actions #4

Updated by pjessen about 4 years ago

Well, I thought that was going to be easy. I have added the following to the download macro - I have also tested that it takes, but I'm not getting any compressed output.

<directory /srv/ftp/pub/opensuse>
.
.
<ifModule mod_deflate.c>
Addoutputfilterbytype  deflate text/html text/plain text/xml text/css
</ifmodule>

</directory>

I have also tried some variations with SetOutputFilter and AddOutputfilter, without success.

Actions #5

Updated by mrmazda over 3 years ago

New styles implemented on d.o.o. http://download.opensuse.org/distribution/leap/15.2/repo/oss/x86_64/ saved as 8,796,400 bytes, a big decrease in size compared to 22 Jan. It loaded in about 30 seconds in SeaMonkey 2.49.5, much improved.

The double-spaced line items are most unwelcome though. :(

Actions #6

Updated by lrupp over 2 years ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

Hi there - and a Happy and Healthy 2022!

I'm currently closing old tickets which did not see much change.
If the main concern still exists and should be handled, please re-open by just replying to this Email.

Thanks in advance,
Lars

Actions #7

Updated by mrmazda over 2 years ago

  • Status changed from Closed to New

This issue https://progress.opensuse.org/issues/62255 has not improved, so needs
to remain open.

Actions #8

Updated by pjessen almost 2 years ago

  • Status changed from New to Feedback

Right now:

wget -O klop.html http://download.opensuse.org/distribution/leap/15.2/repo/oss/x86_64/
--2022-05-19 15:19:09--  http://download.opensuse.org/distribution/leap/15.2/repo/oss/x86_64/
Resolving download.opensuse.org (download.opensuse.org)... 195.135.221.134, 2001:67c:2178:8::13
Connecting to download.opensuse.org (download.opensuse.org)|195.135.221.134|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘klop.html’

klop.html                                   [   <=>                                                                       ]   8.39M  5.90MB/s    in 1.4s    

2022-05-19 15:19:10 (5.90 MB/s) - ‘klop.html’ saved [8796400]

That seems like a significant improvement?

For http://download.opensuse.org/distribution/leap/15.3/repo/oss/x86_64/ I see about 10Mb in 3.8s.
However, http://download.opensuse.org/distribution/leap/15.4/repo/oss/x86_64/ is 36Mb which does seem huge in comparison. However, the directory also lists 88884 files vs only 20281 in 15.2. I presume the number of files in 15.4 will be reduced ones it goes GA.

Problem solved?

Actions #9

Updated by mrmazda almost 2 years ago

Loading http://download.opensuse.org/distribution/leap/15.3/repo/oss/x86_64/ in SeaMonkey minutes ago pegged CPU for about 50 seconds. Afterward, loading http://download.opensuse.org/distribution/leap/15.4/repo/oss/x86_64/ in SeaMonkey pegged CPU for about 250 seconds. Saved with wget it was 38,660,984 bytes. http://ftp5.gwdg.de/pub/opensuse/repositories/home:/, which loads in SM too quickly to measure, was a mere 1,430,655, bytes, 3.7% of D.O.O. OTOH, https://download.opensuse.org/repositories/home:/ loaded in about 30 seconds, much faster than I remember in previous times. By pegged CPU I mean both literally, and SM being completely non-responsive. Most mirror pages used directly use different markup and CSS, and load much faster than those showing as d.o.o. Solved? No way 4 minute load time or 38MB page size is OK for a list of package URIs.

Actions #10

Updated by pjessen almost 2 years ago

  • Status changed from Feedback to Workable
  • Assignee changed from pjessen to andriinikitin

mrmazda wrote:

Loading http://download.opensuse.org/distribution/leap/15.3/repo/oss/x86_64/ in SeaMonkey minutes ago pegged CPU for about 50 seconds.

Unable to reproduce - loading in Firefox takes less than 15sec.

Afterward, loading http://download.opensuse.org/distribution/leap/15.4/repo/oss/x86_64/ in SeaMonkey pegged CPU for about 250 seconds.

Like I said, it has four times more files, which I expect will go away with GA.

Solved? No way 4 minute load time or 38MB page size is OK for a list of package URIs.

Like I said, it has four times more files, which I expect will go away with GA.

Actions #11

Updated by mrmazda almost 2 years ago

The problem isn't how many files are there. The problem is page size 27 times as big as it needs to be to do what needs doing (1 / .037). That doesn't even count the ridiculously overabundant 249,218 bytes of CSS to download and process. Works good should be the top priority, not looks good. They're just lists of URIs. https://archives.fedoraproject.org/ package list pages somehow manage with no CSS at all, as does mirrors.kernel.org for Mageia Cauldron x86_64, which loads its 28,759 line 3,887,437 x86_64/media/core/release/ bytes too quickly to measure.

Actions #12

Updated by andriinikitin almost 2 years ago

mrmazda wrote:

The problem isn't how many files are there. The problem is page size 27 times as big as it needs to be to do what needs doing (1 / .037). That doesn't even count the ridiculously overabundant 249,218 bytes of CSS to download and process. Works good should be the top priority, not looks good. They're just lists of URIs. https://archives.fedoraproject.org/ package list pages somehow manage with no CSS at all, as does mirrors.kernel.org for Mageia Cauldron x86_64, which loads its 28,759 line 3,887,437 x86_64/media/core/release/ bytes too quickly to measure.

Hi, I've been reassigned to this ticket because the UI will probably change to what is currently rendered with http://mirrorchache.opensuse.org/distribution/leap/15.3/repo/oss/x86_64/
(Please note that you may receive a bit delayed reply from mirrorcache.o.o because it currently doesn't have enough hardware resources behind it. The goal is that download.o.o should be used instead).

While overall your concern is valid, below are important notes to consider:

  • currently 15.4 has too many outdated files. Normally download.o.o provides only the latest version of a package, sometimes the previous version as well. 15.4 has several versions for each package, which is not intentional, because we just don't have enough disk space to provide that in general case. So this was noticed recently and should be addressed soon.
  • In my tests mirrorcache shows a bit better size than current one for 15.3 - 7.0 Mb vs 9.0 Mb
  • We must render .metalink , (which alsmost doubles the size) so you cannot simply compare to other websites with listings like ftp5.gwdg.de
  • 250K of CSS shouldn't be a problem if you render few MB of page.
  • It worth to notice that it will be an option to load data in json file. That is usable for using in other tools , e.g. http://mirrorcache.opensuse.org/distribution/leap/15.3/repo/oss/x86_64/?json (2.1 Mb instead of 7.3 Mb).
  • In my understanding proper solution would be for huge folders to provide an alternative for rendering a paged view with filter, something like in OBS. E.g. it only shows 25 packages out of 14K https://build.opensuse.org/project/show/openSUSE:Factory . We have something like this in mind, just it waits its priority. Feel free to contribute to the project if you have chance.

If you wish, I can create a request regarding paged view at https://github.com/openSUSE/MirrorCache and mark this call as waiting for implementation in MirrorCache.
Or let me know if you need any better ideas.

Actions #13

Updated by andriinikitin over 1 year ago

  • Status changed from Workable to Resolved

Since last week the pages are rendered in browsers using javascript, which reduces download size around 5 times.

If pattern of required files is known - it is possible to use glob or regex on server side, which further reduces download size, e.g.

https://download.opensuse.org/distribution/leap/15.4/repo/oss/x86_64/?P=vim*
https://download.opensuse.org/distribution/leap/15.4/repo/oss/x86_64/?REGEX=^vim(-|~).*

Thus I am closing this call as fixed.

Actions

Also available in: Atom PDF