A Peer-to-peer (P2P) video system is characterized by two features: 1) a video is usually available on many participating hosts, and 2) different hosts typically have different sets videos, though some may partially overlap. From a client’s perspective, it can be served by any host having the video it requests. From a server’s perspective, it can be used to serve any client requesting the videos it has. Different matches between clients and servers can result in significantly different system performance. In a fully decentralized environment, finding a good match is challenging not only because the client can choose only the servers that are within its own search scope, but also because clients arrive at different times, which are not known a priori. In this paper, we address these challenges with a novel technique called Shaking. Our approach not only makes it possible for a client to be served by a server that is beyond the client’s own search scope, but also can dynamically adjust the match between the servers and their pending requests as new requests arrive. Our simulation shows that the new technique can boost the system performance to a great extend.