OK,
i wrote simple test to show you what is happening. I create 100 threads, and
i start them at the same time. They begin to update the cache.

public class UpdateableObject implements Serializable {
    public int i = 0;
}
    static int i = 0;
    public static void main(String[] args) {
        final List<Thread> ts = new ArrayList<Thread>();
        for (i = 0; i < 100; i++) {
            final Thread t = new Thread(new Runnable() {
                int num = i++;
                @Override
                public void run() {
                    while (true) {
                        final long t = System.currentTimeMillis();
                        final UpdateableObject track =
UpdateableObjectMemCache.instance().get(num);
                        track.current = ++track.i;
                        UpdateableObjectMemCache.instance().cache(num,
track);
                        final long t1 = System.currentTimeMillis();
                        System.out.println(t1-t);
                    }
                }
            });
            ts.add(t);
        }
        for (final Thread thread : ts) {
            thread.start();
        }

If i increase the number of threads >=200
It blows :
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - null
java.net.SocketTimeoutException
    at
sun.nio.ch.SocketAdaptor$SocketInputStream.read(SocketAdaptor.java:201)
    at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:86)
    at java.io.DataInputStream.read(DataInputStream.java:132)
    at com.danga.MemCached.SockIOPool$SockIO.readLine(SockIOPool.java:1767)
    at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1285)
    at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1209)
    at claire.mem.cache.Memcached.get(Memcached.java:85)
    at claire.mem.cache.MemCacheManager.cache(MemCacheManager.java:27)
    at claire.web.util.PurchaseTracker$2.run(PurchaseTracker.java:138)
    at java.lang.Thread.run(Thread.java:619)
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - null
java.net.SocketTimeoutException
    at
sun.nio.ch.SocketAdaptor$SocketInputStream.read(SocketAdaptor.java:201)
    at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:86)
    at java.io.DataInputStream.read(DataInputStream.java:132)
    at com.danga.MemCached.SockIOPool$SockIO.readLine(SockIOPool.java:1767)
    at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1285)
    at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1209)
    at claire.mem.cache.Memcached.get(Memcached.java:85)
    at claire.mem.cache.MemCacheManager.tryCache(MemCacheManager.java:92)
    at claire.mem.cache.MemCacheManager.get(MemCacheManager.java:105)
    at claire.web.util.PurchaseTracker$2.run(PurchaseTracker.java:135)
    at java.lang.Thread.run(Thread.java:619)
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - null
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - null
java.net.SocketTimeoutException
    at
sun.nio.ch.SocketAdaptor$SocketInputStream.read(SocketAdaptor.java:201)
    at sun.nio.ch.ChannelInputStream.read(ChannelInputStream.java:86)
    at java.io.DataInputStream.read(DataInputStream.java:132)
    at com.danga.MemCached.SockIOPool$SockIO.readLine(SockIOPool.java:1767)
    at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1285)
    at com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:1209)
    at claire.mem.cache.Memcached.get(Memcached.java:85)
    at claire.mem.cache.MemCacheManager.tryCache(MemCacheManager.java:92)
    at claire.mem.cache.MemCacheManager.get(MemCacheManager.java:105)
    at claire.web.util.PurchaseTracker$2.run(PurchaseTracker.java:135)
    at java.lang.Thread.run(Thread.java:619)
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - ++++
exception thrown while trying to get object from cache for key:
TESTcountpurchase
com.danga.MemCached.MemCachedClient Thu Feb 25 17:10:59 EET 2010 - null
java.net.SocketTimeoutException

Here is simple output of the time taken to update(it is not precise but
gives me some idea...):

1
122
120
73
1
0
72
72
70
421
129
0
1
1
0
425
132
130
1
1
0
367
75

Reply via email to