<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7061584657315231233</id><updated>2009-02-21T08:34:07.608+01:00</updated><title type='text'>Garbage Collection</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://incgc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default'/><link rel='alternate' type='text/html' href='http://incgc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Daniel Wroblewski</name><uri>http://www.blogger.com/profile/11895268298351596484</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7061584657315231233.post-8231030049472328266</id><published>2008-06-03T11:21:00.005+02:00</published><updated>2008-06-03T13:45:30.336+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='scalability'/><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><title type='text'>Scalability Articles</title><content type='html'>I read recently an excellent article where Randy Shoup of Ebay shares his &lt;a href="http://www.infoq.com/articles/ebay-scalability-best-practices"&gt;"Scalability Best Practices"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Looks like some of the big websites have evolved in a similar way. Grown from simple, vertical, three tier-architectures (web-, app- and persistence-layer) to horizontal, service-oriented architectures with partitioned data layers (shards).&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Amazon &lt;a href="http://se-radio.net/podcast/2006-12/episode-40-interview-werner-vogels"&gt;1&lt;/a&gt; (podcast interview), &lt;a href="http://www.acmqueue.com/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=388"&gt;2&lt;/a&gt;, &lt;a href="http://highscalability.com/amazon-architecture"&gt;3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://highscalability.com/google-architecture"&gt;Google&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://highscalability.com/youtube-architecture"&gt;YouTube&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://highscalability.com/flickr-architecture"&gt;Flickr&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://highscalability.com/digg-architecture"&gt;Digg&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061584657315231233-8231030049472328266?l=incgc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incgc.blogspot.com/feeds/8231030049472328266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7061584657315231233&amp;postID=8231030049472328266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/8231030049472328266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/8231030049472328266'/><link rel='alternate' type='text/html' href='http://incgc.blogspot.com/2008/06/scalability-articles.html' title='Scalability Articles'/><author><name>Daniel Wroblewski</name><uri>http://www.blogger.com/profile/11895268298351596484</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08081848849547821839'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7061584657315231233.post-6162774905821004854</id><published>2008-05-17T07:12:00.005+02:00</published><updated>2008-05-17T07:41:36.444+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat apache'/><category scheme='http://www.blogger.com/atom/ns#' term='compression'/><title type='text'>Enabling Compression in Tomcat</title><content type='html'>With apache I was used to mod_deflate. After switching to just tomcat I started to look for a gzip servlet filter when I noticed that you can configure gzip in your server.xml per Connector. This means you can have different gzip configurations for port 80 and ssl port 443.&lt;br /&gt;&lt;br /&gt;Example configuration:&lt;br /&gt;&lt;span&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;connector port="80" protocol="HTTP/1.1" enablelookups="false" connectiontimeout="60000" maxthreads="150" compression="on" compressionminsize="2048" compressablemimetype="text/html,text/xml,text/javascript,application/x-javascript,application/javascript,text/css" redirectport="443"&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;This enables compression for all requests on port 80 where the response is of a certain mime type and is larger than 2k.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/config/http.html"&gt;Link to the tomcat documentation regarding this.&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061584657315231233-6162774905821004854?l=incgc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incgc.blogspot.com/feeds/6162774905821004854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7061584657315231233&amp;postID=6162774905821004854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/6162774905821004854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/6162774905821004854'/><link rel='alternate' type='text/html' href='http://incgc.blogspot.com/2008/05/enabling-compression-in-tomcat.html' title='Enabling Compression in Tomcat'/><author><name>Daniel Wroblewski</name><uri>http://www.blogger.com/profile/11895268298351596484</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08081848849547821839'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7061584657315231233.post-4152130285196943981</id><published>2008-05-13T06:00:00.001+02:00</published><updated>2008-05-14T07:58:07.036+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat apache'/><title type='text'>Moving SSL certificate from Apache to Tomcat</title><content type='html'>I finally managed to move our ssl certificates, from apache to tomcat.&lt;br /&gt;&lt;br /&gt;First I just tried to &lt;a href="https://search.thawte.com/support/ssl-digital-certificates/index?page=content&amp;amp;id=S:SO2040&amp;amp;actp=search&amp;amp;searchid=1210691464020"&gt;import the existing openssl cert using the keytool&lt;/a&gt;. I failed miserably, gave up and went down the reissue road.&lt;br /&gt;&lt;br /&gt;Which turned out to be really simple, even though it took thawte 2 days and a live chat before I received the new cert. And then, the live openssl certificate stopped to work! So all of a sudden I hade to switch to the pure tomcat solution a bit head of schedule.. Luckily I've had that working for while now with functional and load tests already made.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create your java keystore with a tomcat keyentry.&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;code&gt;keytool -genkey -keyalg RSA -alias tomcat -keystore [keystore name]&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Generate a CSR and submit it to Thawte, using &lt;a href="http://www.thawte.com/reissue/"&gt;the reissue form&lt;/a&gt;.&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;code&gt;keytool -certreq -alias tomcat -keyalg  RSA -file certreq.csr -keystore [keystorename]&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Wait a couple of days, receive the new cert and save it into a file on your server&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Import the cert into your tomcat keystore&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;&lt;code&gt;keytool -import -alias tomcat -trustcacerts -file mythawtecert.txt  -keystore [keystorename]&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Configure server.xml&lt;br /&gt;&lt;code&gt;&amp;lt;connector port="443" protocol="HTTP/1.1" sslenabled="true"&lt;br /&gt;           maxthreads="150" scheme="https" secure="true"&lt;br /&gt;           clientAuth="false" sslProtocol="TLS" keystoreFile="conf/tomcat.keystore" keystorePass="xxxx"&amp;gt;&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:arial;"&gt;Basically, to reissue is almost like creating new certificate, except for having to pay for it. For more details, check out &lt;a href="https://search.thawte.com/support/ssl-digital-certificates/index?page=content&amp;amp;id=S:SO4076&amp;amp;actp=search&amp;amp;searchid=1210690591162"&gt;Thawte's supportpage&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061584657315231233-4152130285196943981?l=incgc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incgc.blogspot.com/feeds/4152130285196943981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7061584657315231233&amp;postID=4152130285196943981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/4152130285196943981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/4152130285196943981'/><link rel='alternate' type='text/html' href='http://incgc.blogspot.com/2008/05/moving-ssl-certificate-from-apache-to.html' title='Moving SSL certificate from Apache to Tomcat'/><author><name>Daniel Wroblewski</name><uri>http://www.blogger.com/profile/11895268298351596484</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08081848849547821839'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7061584657315231233.post-5119987979242691095</id><published>2008-05-13T04:00:00.000+02:00</published><updated>2008-05-13T16:47:09.381+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tomcat apache'/><title type='text'>Switching to a pure tomcat setup</title><content type='html'>Today I transfered our website to some new servers. I decided run a pure tomcat setup without apache in front. The problem is that the apache server did some critical and some less critical stuff that I haven't tried doing with just tomcat before (I've written the corresponding apache module in parenthesis):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;SSL (mod_ssl)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Url redirection, critical for &lt;a href="http://www.mattcutts.com/blog/seo-advice-url-canonicalization/"&gt;url canonization&lt;/a&gt; (mod_rewrite)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Gzip compression (mod_deflate)&lt;/li&gt;&lt;li&gt;Setting the correct cache-headers (mod_expires, mod_headers)&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7061584657315231233-5119987979242691095?l=incgc.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://incgc.blogspot.com/feeds/5119987979242691095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7061584657315231233&amp;postID=5119987979242691095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/5119987979242691095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7061584657315231233/posts/default/5119987979242691095'/><link rel='alternate' type='text/html' href='http://incgc.blogspot.com/2008/05/switching-to-pure-tomcat-setup.html' title='Switching to a pure tomcat setup'/><author><name>Daniel Wroblewski</name><uri>http://www.blogger.com/profile/11895268298351596484</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08081848849547821839'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>