We are just getting started with load and performance testing. Right now, we're doing simple tests: Run operation X for Y iterations, possibly with some level of randomness to inputs or things that could happen during operation (e.g., close the connection occasionally and make the program recover). Then automatically verify various interesting facts - e.g., that all Y operations completed successfully in under Z seconds, no errors were logged, etc. Note that there are a lot of things to define before you can test. What is "completed"? What is "success"? How big should Z (the number of seconds) be?
As I said, we are just getting started; we made our first test last week, literally (we began work on the product a couple of months back). We actually are setting up CI at the same time, and haven't put testing and CI together yet. I don't think we will be putting load / performance tests into CI right now, but we could do it eventually for small operations by running them for some number of iterations - probably estimated to be 5 to 10 seconds of work - then verifying that the operations took the expected amount of time, and checking any other aspects of load or performance that we're uncertain about.
Currently, we're doing a nightly run that includes our end-to-end tests (which will take 3 to 4 minutes each) and our load tests.
Our system is currently pretty simple. We're creating special performance test fixtures that are just like our normal fixtures except that they run the same operations over and over, then verifying results by checking database timestamps, counting operations, or looking at logs. Later, we'll have to worry about load-testing web sites, imitating users, etc., and we're still figuring out what tools we can use to handle that problem.