Byzantine Fault Tolerant (BFT) state machine replication protocols are used to achieve agreement among replicated servers with arbitrary faults. Most existing BFT protocols perform well in fault-free cases, but usually suffer from serious performance degradation when faults occur. In this paper, we present DBFT, a BFT protocol that realizes graceful performance degradation in faulty cases. The major novelty of DBFT lies in the double-response mechanism, which lets replica nodes deterministically respond to clients twice: one is after the speculative execution phase and the other is after the commitment phase. The double-response mechanism ensures good performance in spite of inconsistency in speculative execution. Also, to further alleviates undetectable performance attacks by a smartly malicious primary, we change primary upon every outstanding request. Moreover, DBFT does not involve clients in critical consensus operations so as to reduce the load of clients. We prove the correctness properties, i.e., safety and liveness, of DBFT. We conduct extensive experiments and the results show that, DBFT outperforms similar BFT protocols obviously in normal cases.