VASmalltalk – Seaside, Memory, Rendering and Apache

I poluted several forums and Smalltalk lists in the last days with my problem, that my browser shows only the source of the page – but does not render it. I programmed a page in my demo, which automatically loads itselfs within some seconds. I added a refresh line to the header of my programmed web-page and in principle this approach worked – but not always. This happened in an Apache based configuration.

The reason (for that problem) has been found and described, but not, why it has happened. It’s because of a wrong content-type (text/plain) line in few answer telegrams delivered by Apache. I changed the default content-type configuration value within my Apache configuration to text/html and now this page-rendering problem went away.

Now the heavy stress tests are working without problems – all pages are deliverd. But now the next problem seems to happen: memory consumption.

First I thought, that my C-JSON library was the reason for this – but restarting the image does not show better numbers …. therefore no memory leak in OS-memory.

I therefore wrote a simple component just to check this reload problem. The refresh interval was set to “1” and the pages are pretty large – but only to increase the problems of that error.

Then I checked it with VASmalltalk and Pharo (without Apache) and both Smalltalks showed increasing-only memory consumption behaviour. At 500 MByte memory consumption Pharo throwed an “Out of memory” exception. VASmalltalk was still running well at 1.2 GByte memory consumption. (Tests were running for several hours).

WAComponent subclass: #TestClass
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''!

!TestClass publicMethods !

renderContentOn: html
	html text: DateAndTime now printString.
	html paragraph: 'Hello World from Seaside.'.
	html paragraph: [ 
		html text: 'To learn more about Seaside components follow the link to the book: '.
		html anchor
			url: '';
			with: 'Dynamic Web Development with Seaside'.
		html text: '.' ].
	1 to: 10000 do: [ :anIndex | html break. html anchor callback: [ ] ; with: ''  ].!

updateRoot: aHTMLRoot

  super updateRoot: aHTMLRoot.
  aHTMLRoot meta
	responseHeaderName: 'refresh' ;
	content: 1 greaseString! !

TestClass initializeAfterLoad!

I have no idea, what I did wrong and have to spend more time (which I have – due to the large productivity of Smalltalk as you might know) on this.

This entry was posted in Smalltalk. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s